JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 25920,
"has_wiki": false,
"homepage": null,
"languages": {
"CSS": 15031,
"JavaScript": 268464,
"TypeScript": 7367578
},
"pushed_at": "2026-07-19T14:09:41Z",
"created_at": "2025-12-27T16:08:28Z",
"owner_type": "User",
"updated_at": "2026-07-19T14:09:45Z",
"description": null,
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "N/A",
"name": "expcat",
"type": "User",
"login": "expcat",
"company": "secret",
"location": null,
"followers": 27,
"avatar_url": "https://avatars.githubusercontent.com/u/4289694?v=4",
"created_at": "2013-04-29T10:25:49Z",
"is_verified": null,
"public_repos": 16,
"account_age_days": 4832
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v2.0.19",
"kind": "patch",
"published_at": "2026-07-17T16:02:35Z"
},
{
"tag": "v2.0.4",
"kind": "patch",
"published_at": "2026-07-15T05:03:00Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2026-07-12T04:16:21Z"
},
{
"tag": "v2.0.0-rc.2",
"kind": "prerelease",
"published_at": "2026-07-09T15:07:20Z"
},
{
"tag": "v2.0.0-rc.1",
"kind": "prerelease",
"published_at": "2026-07-07T13:43:10Z"
},
{
"tag": "v2.0.0-preview.6",
"kind": "prerelease",
"published_at": "2026-07-06T15:08:27Z"
},
{
"tag": "v2.0.0-preview.5",
"kind": "prerelease",
"published_at": "2026-07-05T17:16:02Z"
},
{
"tag": "v2.0.0-preview.4",
"kind": "prerelease",
"published_at": "2026-07-03T08:51:00Z"
},
{
"tag": "v2.0.0-preview.3",
"kind": "prerelease",
"published_at": "2026-07-02T23:28:37Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2026-06-28T07:35:43Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2026-06-22T06:54:05Z"
},
{
"tag": "v1.3.4",
"kind": "patch",
"published_at": "2026-06-15T14:46:40Z"
},
{
"tag": "v1.3.3",
"kind": "patch",
"published_at": "2026-06-15T07:06:38Z"
},
{
"tag": "v1.3.1",
"kind": "patch",
"published_at": "2026-06-15T04:34:12Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2026-06-13T17:00:01Z"
},
{
"tag": "v1.2.52",
"kind": "patch",
"published_at": "2026-06-13T03:02:23Z"
},
{
"tag": "v1.2.47",
"kind": "patch",
"published_at": "2026-06-12T15:00:07Z"
},
{
"tag": "v1.2.46",
"kind": "patch",
"published_at": "2026-06-12T09:44:02Z"
},
{
"tag": "v1.2.44",
"kind": "patch",
"published_at": "2026-06-11T16:22:39Z"
},
{
"tag": "v1.2.43",
"kind": "patch",
"published_at": "2026-06-11T06:33:27Z"
},
{
"tag": "v1.2.41",
"kind": "patch",
"published_at": "2026-06-10T15:40:44Z"
},
{
"tag": "v1.2.39",
"kind": "patch",
"published_at": "2026-06-10T06:08:32Z"
},
{
"tag": "v1.2.37",
"kind": "patch",
"published_at": "2026-06-10T01:22:08Z"
},
{
"tag": "v1.2.34",
"kind": "patch",
"published_at": "2026-06-09T12:59:49Z"
},
{
"tag": "v1.2.33",
"kind": "patch",
"published_at": "2026-06-09T08:53:46Z"
},
{
"tag": "v1.2.31",
"kind": "patch",
"published_at": "2026-06-08T14:23:24Z"
},
{
"tag": "v1.2.30",
"kind": "patch",
"published_at": "2026-06-08T08:27:38Z"
},
{
"tag": "v1.2.23",
"kind": "patch",
"published_at": "2026-06-06T15:46:32Z"
},
{
"tag": "v1.2.14",
"kind": "patch",
"published_at": "2026-05-29T09:33:06Z"
}
],
"recent_commits": [
{
"oid": "86e3bdb1c769bb55d530f728dafdd643ba65d690",
"body": "按 docs/ROADMAP.md 批次 1(表单输入 P0)新增三个缺口组件的 Vue/React 双端实现:\n\n- InputOTP:分格输入验证码/PIN,支持粘贴分发、自动聚焦推进、掩码模式\n (masked/maskChar)、分组显示(groups/separator)、numeric/alphanumeric\n 字符集与自定义 pattern,填满触发 complete;新增 inputOtp locale 分区。\n- TagsInput:输入创建标签,支持回车/分隔符提交、粘贴多值批量拆分、去重、\n 最大数量、两段式退格删除、beforeAdd 校验/转换钩子与 clea\n[…]\ntext7.json、.size-limit.json 子路径预算、CHANGELOG。\n\n测试:core 纯逻辑单测 + 双端框架绑定/a11y 测试 + 三组件 E2E(粘贴/键盘/caret/\n批量);全量 6882 测试通过,覆盖率达标,54 项 E2E(chromium)通过。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: 新增批次 1 表单输入组件 InputOTP / TagsInput / MaskInput",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-19T13:52:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cde1090eac7c72a31a79af8bf4fd0e8be0a9387b",
"body": null,
"is_bot": false,
"headline": "docs: 更新 ROADMAP.md,添加 v2.1.0 开发计划与竞品缺口分析",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-19T03:11:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fadb5d5a1199df549ddf21d359e1a3a992557817",
"body": null,
"is_bot": false,
"headline": "chore: 删除过时的 GitHub 问题模板和配置文件",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-17T16:04:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7176116f7cee917dfc9d4227daa3b1282584273",
"body": null,
"is_bot": false,
"headline": "chore(release): v2.0.19",
"author_name": "github-actions",
"author_login": null,
"committed_at": "2026-07-17T16:01:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c91072173489763396d23f060f63b979e0bf47ca",
"body": "- Introduced section extraction for markdown references in `readReferenceSource`.\n- Added `createReferencePointer` for session-level background documents.\n- Updated `routeTigercatTask` to inline sources and manage duplicates effectively.\n- Enhanced `createComponentRoute` to handle section-specific r\n[…]\niases for better matching of Chinese terms.\n- Added comprehensive tests for routing, normalization, and server instructions.\n- Updated server instructions to clarify tool usage and session management.",
"is_bot": false,
"headline": "feat: Enhance Tigercat MCP with improved routing and reference handling",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-17T15:59:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ea7207aa7fa1168bb70fe361debb5aa019980290",
"body": null,
"is_bot": false,
"headline": "docs: consolidate agent instructions",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T15:58:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "552fb2a02274f6a370505806bcfbfcb29cc0ae9b",
"body": "- Revised SSR example description in examples/README.md to clarify hydration risks.\n- Updated scripts/README.md to reflect changes in test validation and example source checks.\n- Modified validate-tests.mjs to point to the new testing standards location.\n- Simplified release notes in references/release.md for clarity on v2.0.0 changes.\n- Translated and condensed tests/README.md to provide a clearer testing guide and removed the outdated TEST_QUALITY_GUIDELINES.md.",
"is_bot": false,
"headline": "refactor: update documentation and testing guidelines",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T15:47:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c50a7ec9a27ae07b535fc26d5b53d734599ab20",
"body": null,
"is_bot": false,
"headline": "补充 R35 中优先级示例覆盖",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T15:22:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5a775c9b22bc49cc11a5966e6f5385cc733abea",
"body": null,
"is_bot": false,
"headline": "补充 R34 中优先级示例覆盖",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T15:08:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6ea1735bee67a29bb99108c38a7c996c9416b8b",
"body": null,
"is_bot": false,
"headline": "补充 R33 高优先级示例覆盖",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T14:50:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c59f2a9abb0a0cc556a28b677e10989e4ad9e70",
"body": null,
"is_bot": false,
"headline": "补充 R32 高级示例覆盖",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T14:33:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc78915f7bf1d656649865a1fded0dd4f31756ed",
"body": null,
"is_bot": false,
"headline": "补充 R31 高级示例覆盖",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T14:13:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d67cee5aba4e052f05269df822bb0a1b846f7389",
"body": "…cationContainer, Tour, Transfer, and Chart interaction in React and Vue3\n\n- Implemented ConfigProvider example for dynamic locale, theme, color scheme, and direction switching.\n- Created Menu example demonstrating MenuItem, MenuItemGroup, and SubMenu for grouped and multi-level menus.\n- Added Messa\n[…]\nsearch value, custom filter options, and disabled items.\n- Created Chart interaction example using ChartCanvas, ChartAxis, ChartGrid, ChartSeries, ChartLegend, and ChartTooltip for interactive charts.",
"is_bot": false,
"headline": "feat: add examples for ConfigProvider, Menu, MessageContainer, Notifi…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T14:00:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "84a40f7bc60ded4b30735a4d83e6bc6c5a476e09",
"body": "- Added bar-chart example with color options and axis labels.\n- Introduced donut-chart examples showcasing color palettes, animations, and custom tooltips.\n- Implemented funnel-chart examples demonstrating vertical layout, gradients, and responsive design.\n- Created gauge-chart examples with custom \n[…]\ntrating point styles and sizes.\n- Introduced sunburst-chart examples with solid fills, gradients, and label toggles.\n- Added treemap-chart examples featuring gradients, label thresholds, and tooltips.",
"is_bot": false,
"headline": "feat: add new examples for various chart types in Vue 3",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T12:47:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "497981a7cd17dd6b3cd5b768cd123299f873e463",
"body": "…ities\n\n- Added `SkillSource` interface to define file system and HTTP sources.\n- Implemented `createFsSource` and `createHttpSource` functions for local and remote skill retrieval.\n- Introduced `TigercatMcpOptions` for configuration options including `root`, `baseUrl`, and `timeoutMs`.\n- Updated `T\n[…]\n files.\n- Created a new HTML example for the MCP service showcasing usage and features.\n- Implemented tests for remote mode functionality, ensuring proper handling of HTTP sources and error reporting.",
"is_bot": false,
"headline": "feat(mcp): enhance skill source handling and introduce remote capabil…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T05:42:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "085e994a7a7d1ba2e9f82c1ec4b5668250dbe36e",
"body": "feat: add QR code examples demonstrating size and error correction levels\n\nfeat: add QR code examples showcasing custom colors and statuses\n\nfeat: add result component examples displaying various statuses\n\nfeat: add result component example with custom icon and actions\n\nfeat: add signature examples \n[…]\nsize and weight variations\n\nfeat: add text examples for color and text decorations\n\nfeat: add tooltip examples for different trigger methods\n\nfeat: add tooltip examples for different placement options",
"is_bot": false,
"headline": "feat: add pagination examples with simple and disabled states",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T04:48:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5711222b0d9c62581e958d3307b840d6f040c6d2",
"body": "- Implemented input group with size variations (sm, md, lg) and compact mode in React and Vue3.\n- Added demo JSON files for input group examples.\n\nfeat: add rate component examples with size and custom count\n\n- Created rate component examples demonstrating size variations and custom star count in Re\n[…]\n add empty state examples with presets and custom actions\n\n- Introduced empty state examples demonstrating preset usage and custom actions in Vue3.\n- Included demo JSON files for empty state examples.",
"is_bot": false,
"headline": "feat: add input group examples with sizes and compact mode",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-16T01:12:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "138a8ec770d1ad3a0d23af0584642d2d5e3f09e3",
"body": null,
"is_bot": false,
"headline": "修复代码编辑器光标颜色并统一行高",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-15T14:06:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6913517a7112f73acadcebfb15e9a284276db67f",
"body": "示例站每个组件示例此前用 esbuild-wasm(13MB wasm)在浏览器内编译,首个示例被\nwasm 下载 + 实例化阻塞,出现“正在准备独立示例…”的秒级等待。全部 441 个示例均为\n单文件、零相对导入,esbuild 的打包能力从未被用到,实际只做 TS/JSX 转译与裸导入收集,\n故用纯 JS 的 sucrase + es-module-lexer 原位替换,架构、数据流、编辑路径全部不动。\n\n- shared/compiler-utils.ts:新增 transformModule / scanImports / toDiagnostic,\n 移除 esbuild 专属的 \n[…]\natalog 同步)\n\n{ js, css, imports } 产物形状与 worker 消息协议不变,sandbox / importmap / DemoBlock\n均不受影响。详见 docs/proposals/playground-lightweight-compiler.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(examples): 用 sucrase 替换 esbuild-wasm 编译 playground 示例",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-15T13:29:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9aa582a7cc131e2b83facdc49d6db09d79b518cf",
"body": null,
"is_bot": false,
"headline": "chore(release): v2.0.4",
"author_name": "github-actions",
"author_login": null,
"committed_at": "2026-07-15T05:01:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b868139974b0d09021fb94a61be1d3fac9782a5",
"body": null,
"is_bot": false,
"headline": "修复嵌套浮层的焦点与层级行为",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-14T18:34:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "257ce622a5c4006dfc4502cc1b7bb027a533847f",
"body": null,
"is_bot": false,
"headline": "重构 Tigercat 前端与构建流程",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-14T18:11:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d02267524c9fba6c0c95d3fcabd93079f3939a2",
"body": null,
"is_bot": false,
"headline": "docs: 更新 README.md,完善组件库描述与使用指南",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T10:44:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8cca854b6119ce90e823c2ea1cdd66e9c3ecc8c3",
"body": "Vite 8(rolldown)对非 lib 构建传 preserveEntrySignatures: false,\nemitFile 发射的 playground-* 入口导出被整体剥掉,线上沙箱报\n\"does not provide an export named 'Button'\"。按 chunk 指定\npreserveSignature: 'strict' 修复 GitHub Pages 示例站。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(examples): playground runtime chunk 按 chunk 保留导出签名",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T09:54:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b4c20f8d6deacc78a29a59fe0282f2ccce499fba",
"body": "mcp 参与 pack、tarball 无 CJS 校验与 clean install,并新增导出、\nbin --help 与版本一致性 smoke;不参与组件库专属 tree-shaking/体积断言。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(scripts): publish-check 纳入 mcp 包构建与 smoke 校验",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T04:14:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0e13df570f74552a903fc0edc23a84ea10fa9f97",
"body": "npm .bin 软链(npx tigercat-mcp)与 macOS /var -> /private/var 等符号链接路径下,\nresolve(argv[1]) 与 realpath 后的 import.meta.url 不相等,main() 不执行,\nstdio 服务器不会启动。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(mcp): bin 经软链调用时静默退出,realpath argv[1] 后再判定直接运行",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T04:14:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d26150eec780e42ede267bc7f0832147856164e3",
"body": "- root 与 core/react/vue/cli/mcp 统一为 2.0.0,同步运行时 version 导出、CLI 常量与示例首页版本\n- CHANGELOG:v2.0.0 主条目收口为正式版并移至顶部,新增相对 rc.2 的变更小节\n- MIGRATION:移除 preview/rc 指针条目,rc.1 Pagination 迁移内容并入 v2.0.0 主条目\n- ROADMAP 与 release.md 收口为正式版口径,补记手动稳定版发布流程\n- 清理 .changeset/ 中 16 个内容已随既有版本发布面消化的暂存 changeset\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: 发布 v2.0.0",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T02:49:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a77817a35f57ec9e5cdb29f58d595cb4b8edf0f3",
"body": "- 删除已被 TEST_QUALITY_GUIDELINES.md 取代的 4 个测试清单/指南文档\n- tests/README.md、TEST_QUALITY_GUIDELINES.md 移除对旧文档的引用,流程收口到 pnpm test:validate\n- Drawer spec 改用 fake timers + ANIMATION_DURATION_MS 精确推进动画\n- Form spec 改用 waitFor 断言 aria-invalid,Popover 移除多余硬等待\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(tests): 移除旧测试清单文档并消除 Drawer/Form/Popover 硬等待",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-12T02:18:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "353a34e09aa0998e721f9312aed7f0a704a2dc1d",
"body": "剩余验证(React 全路由巡检、亮暗/移动抽查、quality:release)已全部\n执行并通过,交接文档使命完成。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(docs): 移除已完成的 Example 改造交接提示词文档",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T09:32:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e610e9ac51112a3414d821ed0bd5123f8fd24cbc",
"body": "…ed 引用\n\n改造在 examples/example/shared/playground 新增了 Node 侧 vite-runtime-plugin\n与浏览器端 runtime 入口,示例 tsconfig 用 ../shared/... 排除插件文件、\nvite.config 以相对路径引用 playground 目录。publish-check 将 shared 复制为\n.publish-shared 后仅重写 include 与 alias,导致临时副本中排除失效\n(vue-tsc TS2688)且 runtime 入口从原 shared 位置解析不到\n@tailwindcss/browser(rolldown 构建失败)。现同步重写 exclude 前缀与\nvite 配置中的两处硬引用。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(scripts): publish-check 同步重写 tsconfig exclude 与 vite 配置中的 ../shar…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T09:32:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "53d446fd93f3cab819e0f4f333f982cdf843f162",
"body": null,
"is_bot": false,
"headline": "feat: 添加 Example 单示例精简改造的交接提示词文档",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T07:44:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05ee6ec1677769debfcbf649781b66eaf36e93e2",
"body": null,
"is_bot": false,
"headline": "feat: 添加 spot-check 功能以验证应用路由的渲染状态",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T07:39:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a37fdab429a86445495a5c5c28bdc15ca8658f5b",
"body": null,
"is_bot": false,
"headline": "Refactor code structure and optimize performance across multiple modules",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T07:14:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2ad3f878067f2ed1186c08ffa57d9a9ae509c49",
"body": null,
"is_bot": false,
"headline": "Refactor code structure and optimize performance across multiple modules",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-11T00:10:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "285b1446889771aefd28ff7093f3bc2469042ef4",
"body": null,
"is_bot": false,
"headline": "完成 v2 发布前清理",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-10T16:29:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38f5ab8ae271c88ab683fc607255edf222c28932",
"body": "# Conflicts:\n#\tCHANGELOG.md\n#\tdocs/MIGRATION.md\n#\tscripts/README.md\n#\tskills/tigercat/references/release.md",
"is_bot": false,
"headline": "Merge branch 'main' of github.com:expcat/Tigercat",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-10T14:01:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89ceec91129b67620e5e3e397d7ac6d076666f22",
"body": "- Removed several tests from Tag, Textarea, Tooltip, Transfer, Tree, TreeMapChart, Upload, Watermark, and useFormController that were either redundant or not providing significant value.\n- Simplified the test cases by focusing on essential functionality and removing tests for edge cases that do not contribute to overall test coverage.\n- Updated vitest configuration to limit coverage reporting to text only, excluding unnecessary files and directories.",
"is_bot": false,
"headline": "refactor(tests): remove redundant tests and edge case handling",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-10T13:45:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "716aa10d40c8a4cd2180128933e755a8cd5b5a14",
"body": null,
"is_bot": false,
"headline": "chore: 发布 v2.0.0-rc.2",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-09T15:05:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0717bc70e706ddbf898ab74093e8f14674bebf96",
"body": "…ostics\n\n- Refactor skill index loading to build a comprehensive component map.\n- Introduce `diagnoseTigercatMcp` function for validating component and reference integrity.\n- Update types to include detailed component metadata and references.\n- Generate context7.json with accurate component and refe\n[…]\nfunctionality for components, categories, and command APIs.\n- Improve test coverage for component loading, routing, and diagnostics.\n- Update documentation to reflect new routing and usage guidelines.",
"is_bot": false,
"headline": "feat: Enhance Tigercat MCP with improved component metadata and diagn…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-09T14:28:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "58984cf8f6c2f2ef46cc2d17f407ba164712869d",
"body": "- Bump vue and @vue/server-renderer to ^3.5.39\n- Update typescript to ^6.0.3 and add @typescript/native for TS 7 support\n- Upgrade vite to ^8.1.3\n- Update tailwindcss and @tailwindcss/vite to ^4.3.2\n- Bump @types/node to ^26.1.1\n- Upgrade vue-tsc to ^3.3.7\n- Add minimumReleaseAgeExclude entries for TypeScript 7 binaries across various platforms",
"is_bot": false,
"headline": "chore: update dependencies in pnpm-workspace.yaml",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-09T14:11:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d073b50dd1e85bcfafba465f39d484ea042d0399",
"body": "…ferences\n\n- Introduced `@expcat/tigercat-mcp` package with a local stdio MCP server.\n- Implemented routing for tasks and component lookups.\n- Added scripts for building and serving the MCP server.\n- Updated README with MCP service instructions and examples.\n- Enhanced existing scripts to include MCP package in release readiness checks.\n- Created tests for MCP functionality, ensuring proper routing and access control.",
"is_bot": false,
"headline": "feat(mcp): add local MCP server for routing LLMs to Tigercat skill re…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-09T01:44:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a1a56214894ef5f21dccb2567a7cc28f5a9ad58",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v2.0.0-rc.1",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-07T13:42:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ed5b35fe1ed9fb62d6ade64fbd32a9e73f01c42a",
"body": "…dling and improve event emission",
"is_bot": false,
"headline": "feat: update pagination components to streamline page size change han…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-07T09:22:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "88da87aa7dcb13e2b21364dd27f80e180f98e6ff",
"body": null,
"is_bot": false,
"headline": "feat: enhance pagination button styling with active state support",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-06T16:41:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6feeb25a688aa4cb4427515d846fd7dc7344cf5",
"body": "- feat: DataExport 数据导出组件(Vue/React,Data 分类),支持 XLSX 与\n Markdown 导出;columns 复用 TableColumn,Table/DataTableWithToolbar\n 列配置可直接透传;formats 单格式渲染按钮、多格式渲染下拉\n (默认 ['xlsx', 'markdown']),支持 fileName/sheetName/\n cellFormatter/disabled。序列化实现位于 core 子路径\n @expcat/tigercat-core/utils/data-export,组件按需 lazy i\n[…]\nrt 标签\n- sync version to 2.0.0-preview.6 across packages, runtime exports,\n CLI constants/templates, examples, CHANGELOG, MIGRATION, release doc\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v2.0.0-preview.6",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-06T15:06:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aacb7afbb452f54fab21c3885e1d2fad14bd711e",
"body": "- Add data-export-utils for serializing data to XLSX and Markdown formats.\n- Create a DataExport component for React and Vue to handle user interactions for exporting data.\n- Implement lazy loading of data export utilities to optimize performance.\n- Add tests for data export utilities and components to ensure functionality and reliability.",
"is_bot": false,
"headline": "feat: implement data export functionality with XLSX and Markdown support",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-06T15:01:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c864dcc548855c0af02d3d90524bcc50349cb85c",
"body": "- Revised component notes in composite, data, and layout documentation for clarity and consistency.\n- Enhanced pagination behavior in List and Table components to support quick jumping and improved accessibility.\n- Updated tests for List and Table components to reflect new pagination features and ensure proper functionality.",
"is_bot": false,
"headline": "refactor: update component documentation and improve pagination handling",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-06T02:10:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59828cae2255e709870113ddd6c97936dcdec6a6",
"body": "- feat(table/list): PaginationConfig / ListPaginationConfig 新增\n remote?: boolean(默认 false,完全向后兼容)。remote: true 时\n dataSource 即当前页数据,Vue/React Table 与 List 跳过内部\n paginateData 切片原样渲染,总页数与 showTotal 范围文案全部由\n pagination.total 计算;current/pageSize 仍为受控属性,\n page-change / page-size-change 事件行为不变,业务侧收到事\n[…]\n片回归用例\n- sync version to 2.0.0-preview.5 across packages, runtime exports,\n CLI constants/templates, examples, CHANGELOG, MIGRATION, release doc\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v2.0.0-preview.5",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-05T17:13:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a7e36c92dff160204d163eac2833fe822e717861",
"body": "ESM-only 变更后 core/react/vue 的 gzip 压缩包、解包体积与文件数\n相比 v1.5.0 均下降约 50%,补充四包对比表。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 在 v2.0.0 变更记录中补充与 v1.5.0 的发布体积对比",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T09:47:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c7d1f63af57dd7fca948c5edc00ca85459e6e640",
"body": "- examples/index.html: 统计数据更新为组件 148+、测试用例 7600+、语言 13、\n 预设主题 7;补齐缺失组件标签(Stepper/ColorSwatch/CronEditor/Signature/\n NumberKeyboard/ImageCropper/Collapse/Carousel/Countdown/ScrollSpy/Spotlight/\n OrgChart/Gantt/MarkdownEditor/ImageAnnotation)\n- README.md: 组件数更新为 148+,版本说明由 v1.0.0 改为 v2.0.0 预览阶段,\n 新增 GitHub Pages 在线示例地址(https://expcat.github.io/Tigercat/)\n- examples/README.md: 增加在线示例地址\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 更新示例首页数据与 README 过时内容,新增在线示例地址",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T09:06:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "df23ac21a15c1d5b320bd3c72451dfbe291495a5",
"body": "- feat(icon): Vue/React Icon 新增 icon prop,接受 IconDefinition\n (viewBox + path 数据),自定义图标 / logo 定义一次处处复用,\n 无需全局注册;优先级 children > icon > name\n- feat(core): 新增约 60 个扩展图标常量(rocketIcon、sortAscendingIcon\n 等,Heroicons outline 风格),/*#__PURE__*/ 标注 + sideEffects:false,\n 未使用的图标可被 tree-shake,不进组件包体积;iconReg\n[…]\n径预算不变\n- sync version to 2.0.0-preview.4 across packages, runtime exports, CLI\n constants/templates, examples, CHANGELOG, MIGRATION, release doc\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v2.0.0-preview.4",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T08:48:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "27d413cb6ea5b382dcaacc30f0ba58040340af70",
"body": "pnpm --filter 透传时多余的 \"--\" 使 Vite 收到字面量参数而忽略 --port,\n预览服务器实际端口与声明端口不一致。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(claude): 修复 launch.json 端口参数未生效的问题",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T03:40:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "64e124d8ae258c68b463e60587cf476eca071bbb",
"body": "原先触发器/输入框硬编码 pr-16(64px)为清除+图标按钮预留空间,\n清除按钮不可见时文本区被平白压缩 12~28px,导致文本提前截断。\n现按图标实际占位动态计算:\n- Select:有清除 56px / 无清除 36px\n- DatePicker:有清除 64px / 无清除按尺寸 40/48/56px\n- TimePicker:有清除 64px / 无清除按尺寸 32/40/48px\ncore 的 getDatePickerInputClasses / getTimePickerInputClasses\n新增可选参数 showClear,向后兼容。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(components): Select/DatePicker/TimePicker 右侧内边距随清除按钮动态调整",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T03:40:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b0aca4fa2e547af1ef105f17209b211ef1b3d693",
"body": "# Conflicts:\n#\t.codegraph/.gitignore",
"is_bot": false,
"headline": "Merge branch 'main' of github.com:expcat/Tigercat",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T02:20:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3e431b5dceab47af341122408e9fd7fdac569ce",
"body": null,
"is_bot": false,
"headline": "feat(gitignore): add .gitignore to exclude all files except itself",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T02:18:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18a6a1a95b92b88138c1f6cbb73a927f31cfeda7",
"body": "视觉回归基线在 macOS 生成,CI 跑 Linux 容器,字体/子像素渲染差异\n导致 *-visual 规格必然像素 diff 失败,叠加 retries:2 + workers:1\n串行重试,整轮跑到约 25min。\n\n- playwright.config.ts: CI 下 testIgnore 增加 *-visual,仅跑功能规格\n (components/interaction/mobile-touch);本地仍跑全量含视觉回归。\n- retries 由 2 降为 1。\n- e2e.yml: 步骤更名并加注说明 CI 只跑功能测试。\n\nCI 用例数 206 -> 152(剔除 54 个视觉用例)。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(e2e): CI 跳过视觉回归,降低 retries 修复报错与超时",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T02:08:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5a03a0d76ad280a4f1f72c1376d3d9cb12f3e6a2",
"body": "移除 pull_request 与 schedule 触发,仅保留 workflow_dispatch,\n与 ci.yml 的手动触发模式保持一致。同时清理仅在 PR/定时场景生效的\nsmoke 步骤与条件判断。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: E2E 改为手动触发,移除 PR 与定时自动触发",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-03T01:55:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4f5a8e4cb01f66dd2a696f81f1526b6ab68aa59f",
"body": "- fix(core): DatePicker locale labels merge en-US baseline first, so a\n locale preset missing keys falls back to en-US instead of undefined\n- chore(react): drop unused React import in FormItemContext (lint gate)\n- chore(size): raise \"Core locale (zh-CN)\" budget 3 kB → 4 kB to absorb\n the recent i1\n[…]\nlout\n- sync version to 2.0.0-preview.3 across packages, runtime exports, CLI\n constants/templates, examples, CHANGELOG, MIGRATION, release doc\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release v2.0.0-preview.3",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T23:22:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a5aafdfcdd26a1a019768577f7a49f5bd9b27605",
"body": "EX1-EX16 审核发现:Vue AvatarGroup 硬编码 aria-label 写在 ...attrs 之后,\n用户传入值被覆盖(EX12 的「项目团队成员」在 Vue 端不生效),且默认组名与\n溢出徽标读屏文案为硬编码英文。\n\n按 S5 同款 locale 模式完整修复:\n- core: 新增 TigerLocaleAvatarGroup(ariaLabel / overflowAriaLabel {count} 模板)、\n getAvatarGroupLabels、mergeTigerLocale 合并键,en-US/zh-CN 预设补 avatarGroup 段,\n get\n[…]\n{...teamGroupA11y} 类型绕行,直写 aria-label\n- tests: Avatar spec 补 attrs 覆盖/locale prop/ConfigProvider/labels 覆盖用例,\n i18n spec 补预设断言;API baseline 重生成\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "AvatarGroup aria 文案接入 locale 体系并修复 attrs 覆盖问题",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T07:25:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "933d6dc03445a2feca44fea747df671a9cdaeaff",
"body": null,
"is_bot": false,
"headline": "add codegraph .gitignore",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T06:52:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "134432f2f52aa0125a1d4f6ec81f26a9a0eb1928",
"body": null,
"is_bot": false,
"headline": "修复 EX12-EX16 示例体验问题",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T06:35:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c629caff8702b8b2ab466871ecdc7c845dc65b8",
"body": null,
"is_bot": false,
"headline": "修复 Example EX1-EX11 问题",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T05:34:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53ddd9267a796a6b8337ac9c39936f72609f233b",
"body": "Drop the disabled-variant axe run (React+Vue); the disabled ARIA\nattributes are asserted directly by neighboring tests. Reviewed\nVirtualTable/DataTableWithToolbar/Popover class assertions and kept\nthem: they observe className/theme/responsive features, not styling\nnoise. Both CropUpload specs green (60 cases).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(tests): keep a single axe audit in CropUpload specs",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T03:06:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e4f9c77b36a8e216c48ea1ebd5cfc60e52b61707",
"body": "…ec pairs\n\nTaskBoard/Kanban/Collapse/Anchor/AutoComplete/Cascader/Transfer/\nTreeSelect/Steps/RichTextEditor (React+Vue): fold the axe-check-only\nsecond Accessibility block into the main one, drop the redundant\n\"minimal props\" Edge Cases smoke its (the axe test renders the same\nmarkup), and merge Vue Transfer ARIA-role its to mirror React.\nAll 20 files green (499 cases).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(tests): merge duplicate Accessibility describes across 10 sp…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T03:05:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "91bd500104e30b593f8057e55d8698eb574a716d",
"body": "Tabs/Input/Menu/Tree/Modal/Upload (React+Vue), Select reviewed with\nno change needed: drop Tailwind class assertions that duplicate\nbehavioral checks, merge duplicate Accessibility describes (Tabs),\nkeep one expectNoA11yViolations per framework (Tree now checks the\ncheckable render), collapse trivial edge-case its (Input) and remove\n\"minimal props\" smoke its already covered elsewhere. All touched\nspecs green (362 cases).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(tests): light-touch cleanup of feature-rich component specs",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T03:00:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9af1c84acbde251b70dae0169f4d680d96124e41",
"body": "React 31→15 its, Vue 30→15 its (44 runtime cases green in both\nframeworks); merged overlapping describes, collapsed variant\nmatrices into it.each, kept one a11y check per framework.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(tests): slim InputNumber specs per lean-first guidelines",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-02T02:53:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7bffde18079a2a03f3985deb49d42100800b50ad",
"body": null,
"is_bot": false,
"headline": "Refactor Tigercat docs and generated API references",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T20:21:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b05e8c2cffe81ce6da32d8cfe8e4a42143f1ad31",
"body": null,
"is_bot": false,
"headline": "Refactor shared input state and locale defaults",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T19:23:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38dd43adaa1954ddd192d6bd17f546e38698e606",
"body": "…ents\n\n- Added keyboard accessibility for ColorPicker, allowing panel opening with Enter and Space.\n- Exposed aria-expanded and aria-haspopup attributes on ColorPicker trigger.\n- Made preset swatches keyboard-operable in ColorPicker.\n- Implemented localization for DatePicker, CronEditor, MarkdownEdi\n[…]\nverify on-screen indicators and accessibility.\n- Added tests for custom close aria labels in Message and Notification components.\n- Created launch configuration for example React and Vue applications.",
"is_bot": false,
"headline": "feat(tests): enhance accessibility and localization in various compon…",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T18:47:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "481ec6aea8a050f55add79671a6a5515a5015b5c",
"body": null,
"is_bot": false,
"headline": "Clarify Example user story workflow",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T16:28:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b044091fd6d82dd6c955ee78bedd38407d117d0",
"body": null,
"is_bot": false,
"headline": "docs: consolidate example user story requirements",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T16:02:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23c65780353dd51050e152b7c005e37b515a8da7",
"body": null,
"is_bot": false,
"headline": "Finalize R28 example review docs",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T15:49:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27cbd1c2ae66f98cfd3314997c0abff50c912066",
"body": null,
"is_bot": false,
"headline": "Advance roadmap to E21 example review",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T15:16:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e550a4eb4940bf258c9dadec50f14116e4cb467e",
"body": null,
"is_bot": false,
"headline": "Update roadmap and example plan for E19 completion",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T14:52:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a630b395c67bd82876bbce8bf4c06c7c7ec7472",
"body": null,
"is_bot": false,
"headline": "更新 E18 图表示例完成状态",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T14:35:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "785e93e35e7f4ec8bf0f5173f0d01a107b7f3c98",
"body": null,
"is_bot": false,
"headline": "完善E17并更新路线图",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T14:18:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f057a08cff5154f075201a058ecc4e542183cc64",
"body": null,
"is_bot": false,
"headline": "更新 E16 虚拟滚动审查文档",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T13:50:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "909c2418ded15d199215834a7674a96d1b11306a",
"body": null,
"is_bot": false,
"headline": "Merge origin/main into main",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T13:39:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5213fd335498d564ad23be4100d188f1320238df",
"body": null,
"is_bot": false,
"headline": "Update roadmap for completed example review groups",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T13:34:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddb2424b61a5345fe849fe5037e2091ece70d5e0",
"body": null,
"is_bot": false,
"headline": "更新E13例审并推进路线图至E14",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T12:53:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49927964f108f16ed52adf678d9f5ef62828bc32",
"body": null,
"is_bot": false,
"headline": "Advance example plan to E10",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T12:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a567952549c8cbd53d87edfbe0cf034926a7d16",
"body": null,
"is_bot": false,
"headline": "Mark E11 and E12 example audits complete",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T12:19:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e20dd244b734919def4bce62f525ccfbab28b5d5",
"body": "- EXAMPLE_AGENT_PLAN.md:队列表 E08 置为已完成,新增 Alert/Loading/Progress/Tooltip/Popover/Popconfirm 执行记录\n- ROADMAP.md:同步 R28 进度为 E01-E08 已完成,下一分组 E09\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "更新 E08 示例审查与完成状态",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T12:01:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "301e4027b2f41b5597d22b3aa3e36908a67daa46",
"body": null,
"is_bot": false,
"headline": "更新 E07 示例审查与完成状态",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T09:17:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b47bc2b9e7838f41cef2a0a4d03154af5bac1d8b",
"body": null,
"is_bot": false,
"headline": "更新 E06 示例验收文档",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T09:05:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "138e403754bc6158a3db836b523078a2e5b48c9f",
"body": null,
"is_bot": false,
"headline": "更新路线图并归档E05评审",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T08:51:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7a97bc7923409b0ab45a946d01b0bbd084519b1",
"body": null,
"is_bot": false,
"headline": "标记 E04 Layout 示例已完成",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T08:14:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13bdfc207a2cfc461b6771cdce9b880e9b85aaeb",
"body": null,
"is_bot": false,
"headline": "Mark E03 image examples complete",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T08:02:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "274624473f29792f7d5a463df78bac7276e3bfd8",
"body": null,
"is_bot": false,
"headline": "Advance E02 example review and roadmap status",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T07:33:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "627edc143b386e680a0abdae1f7c3b742c237b5d",
"body": null,
"is_bot": false,
"headline": "Update example plan and roadmap for E01 completion",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T07:24:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c50b177cd7a3a9b179c1f325509d356208ae3fc1",
"body": null,
"is_bot": false,
"headline": "Update roadmap for R28 example user-story review",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-07-01T07:14:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2347fd3c81a460391743c0691b2a9df03aece24",
"body": null,
"is_bot": false,
"headline": "chore: keep publish validation local",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T17:58:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99e1e471f529ce6ad9ffd3cdc7f8f0e8d3a788ed",
"body": null,
"is_bot": false,
"headline": "chore: release v2.0.0-preview.2",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T17:44:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cdaa3ca60030251728c68d301f8378cadad60ae",
"body": null,
"is_bot": false,
"headline": "examples: complete roadmap R27 demo cleanup",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T17:27:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9721c099b3f65fcb1bbc57bfa526d576a5afb940",
"body": null,
"is_bot": false,
"headline": "完成 R26 Charts 与 Advanced 示例合并",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T16:26:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fff90b45bb11958d1b29e30be350190ceae1191f",
"body": null,
"is_bot": false,
"headline": "合并 R25 导航与反馈示例展示",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T16:13:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef24f55e77358e8079896b5074908f208c0d1a3b",
"body": null,
"is_bot": false,
"headline": "重构 Tigercat 路由与组件测试",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T15:58:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2177373b750d5f754975415c7a033873d3b2ccc2",
"body": null,
"is_bot": false,
"headline": "修正文档审计状态与变更记录",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T11:11:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9fb3ab094514886b91962d3e0b063be3e8c1452",
"body": null,
"is_bot": false,
"headline": "Add select locale labels and overrides",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T10:06:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "078c9f1baec25a37034cb40f274e78b005f7033b",
"body": null,
"is_bot": false,
"headline": "简化 npm 发布工作流",
"author_name": "expcat",
"author_login": "expcat",
"committed_at": "2026-06-30T09:45:00Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 29,
"commits_last_year": 1042,
"latest_release_at": "2026-07-17T16:02:35Z",
"latest_release_tag": "v2.0.19",
"releases_from_tags": false,
"days_since_last_push": 3,
"active_weeks_last_year": 23,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": false,
"has_contributing": true,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "@expcat/tigercat-cli",
"exists": true,
"license": "MIT",
"keywords": [
"tigercat",
"ui",
"cli",
"scaffolding",
"code-generator"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@expcat/tigercat-cli",
"is_deprecated": false,
"latest_version": "2.0.19",
"repository_url": "https://github.com/expcat/Tigercat",
"versions_count": 38,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2137,
"first_published_at": "2026-03-27T19:58:55.393000Z",
"latest_published_at": "2026-07-17T16:02:26.165000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "@expcat/tigercat-mcp",
"exists": true,
"license": "MIT",
"keywords": [
"tigercat",
"mcp",
"llm",
"skill",
"docs"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@expcat/tigercat-mcp",
"is_deprecated": false,
"latest_version": "2.0.19",
"repository_url": "https://github.com/expcat/Tigercat",
"versions_count": 4,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 379,
"first_published_at": "2026-07-09T15:07:15.376000Z",
"latest_published_at": "2026-07-17T16:02:26.109000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "@expcat/tigercat-vue",
"exists": true,
"license": "MIT",
"keywords": [
"tigercat",
"ui",
"vue",
"vue3",
"components"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@expcat/tigercat-vue",
"is_deprecated": false,
"latest_version": "2.0.19",
"repository_url": "https://github.com/expcat/Tigercat",
"versions_count": 58,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2170,
"first_published_at": "2026-01-15T10:38:45.139000Z",
"latest_published_at": "2026-07-17T16:02:27.178000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "@expcat/tigercat-core",
"exists": true,
"license": "MIT",
"keywords": [
"tigercat",
"ui",
"utilities"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@expcat/tigercat-core",
"is_deprecated": false,
"latest_version": "2.0.19",
"repository_url": "https://github.com/expcat/Tigercat",
"versions_count": 58,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2612,
"first_published_at": "2026-01-15T10:38:45.039000Z",
"latest_published_at": "2026-07-17T16:02:26.582000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "@expcat/tigercat-react",
"exists": true,
"license": "MIT",
"keywords": [
"tigercat",
"ui",
"react",
"components"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@expcat/tigercat-react",
"is_deprecated": false,
"latest_version": "2.0.19",
"repository_url": "https://github.com/expcat/Tigercat",
"versions_count": 58,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2308,
"first_published_at": "2026-01-15T10:38:46.063000Z",
"latest_published_at": "2026-07-17T16:02:26.945000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"example",
"examples",
"recipes"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"examples/example/react/tsconfig.json",
"examples/example/vue3/tsconfig.json",
"examples/nextjs/tsconfig.json",
"packages/cli/tsconfig.json",
"packages/core/tsconfig.json",
"packages/mcp/tsconfig.json",
"packages/react/tsconfig.json",
"packages/vue/tsconfig.json",
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 57750,
"source_files_sampled": 1682,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 2853
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "commander",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^15.0.0"
},
{
"name": "picocolors",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^1.1.1"
},
{
"name": "prompts",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^2.4.2"
},
{
"name": "@floating-ui/dom",
"manifest": "packages/core/package.json",
"ecosystem": "npm",
"version_constraint": "^1.7.6"
},
{
"name": "@modelcontextprotocol/sdk",
"manifest": "packages/mcp/package.json",
"ecosystem": "npm",
"version_constraint": "^1.29.0"
},
{
"name": "@expcat/tigercat-core",
"manifest": "packages/react/package.json",
"ecosystem": "npm",
"version_constraint": "workspace:*"
},
{
"name": "@expcat/tigercat-core",
"manifest": "packages/vue/package.json",
"ecosystem": "npm",
"version_constraint": "workspace:*"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 29,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 33,
"closed_unmerged_prs": 21
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "expcat",
"commits": 936,
"avatar_url": "https://avatars.githubusercontent.com/u/4289694?v=4"
},
{
"type": "User",
"login": "expcats",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/193779007?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.986
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"create-release-tags.yml",
"deploy.yml",
"publish-on-tag.yml",
"publish.yml"
],
"has_docs_dir": true,
"linter_configs": [
"eslint.config.js"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 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": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "20 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "86e3bdb1c769bb55d530f728dafdd643ba65d690",
"ran_at": "2026-07-22T23:58:30Z",
"aggregate_score": 3.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-19T14:09:42Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-02-05T12:43:25Z",
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/expcat/Tigercat",
"host": "github.com",
"name": "Tigercat",
"owner": "expcat"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"security": 35,
"vitality": 88,
"community": 41,
"governance": 55,
"engineering": 75
},
"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": 80,
"inputs": {
"commits_last_year": 1042,
"human_commit_share": 1,
"days_since_last_push": 3,
"active_weeks_last_year": 23
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "23/52 weeks with commits",
"points": 15.9,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 23
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "1042 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 1042
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 29,
"latest_release_tag": "v2.0.19",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "29 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 29
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 3,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 3 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 3
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 41,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 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": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 66,
"inputs": {
"packages": [
"@expcat/tigercat-cli",
"@expcat/tigercat-mcp",
"@expcat/tigercat-vue",
"@expcat/tigercat-core",
"@expcat/tigercat-react"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 9606
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "9,606 downloads/month across npm",
"points": 53.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 9606,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 55,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 15,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.986
},
"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 99% of commits",
"points": 0.3,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 99
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"merged_prs": 29,
"open_issues": 0,
"closed_issues": 33,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 21
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "29/50 decided PRs merged",
"points": 22.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 29,
"decided": 50
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 52,
"inputs": {
"followers": 27,
"owner_type": "User",
"is_verified": null,
"owner_login": "expcat",
"public_repos": 16,
"account_age_days": 4832
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "27 followers of expcat",
"points": 10.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 27,
"login": "expcat"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "16 public repos, account ~13 yr old",
"points": 21,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 16
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"@expcat/tigercat-cli",
"@expcat/tigercat-mcp",
"@expcat/tigercat-vue",
"@expcat/tigercat-core",
"@expcat/tigercat-react"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "5 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 5,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "58 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 58
}
}
],
"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": 75,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "eslint.config.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 35,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 35,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 3.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 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 detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "20 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 72,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "good",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.57,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 2853
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "57 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 30.4,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 57,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"pnpm-lock.yaml"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"examples/example/react/tsconfig.json",
"examples/example/vue3/tsconfig.json",
"examples/nextjs/tsconfig.json",
"packages/cli/tsconfig.json",
"packages/core/tsconfig.json",
"packages/mcp/tsconfig.json",
"packages/react/tsconfig.json",
"packages/vue/tsconfig.json",
"tsconfig.json"
],
"agent_commit_share": 0.26,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "eslint.config.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "examples/example/react/tsconfig.json, examples/example/vue3/tsconfig.json, examples/nextjs/tsconfig.json, packages/cli/tsconfig.json, packages/core/tsconfig.json, packages/mcp/tsconfig.json, packages/react/tsconfig.json, packages/vue/tsconfig.json, tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples/example/react/tsconfig.json, examples/example/vue3/tsconfig.json, examples/nextjs/tsconfig.json, packages/cli/tsconfig.json, packages/core/tsconfig.json, packages/mcp/tsconfig.json, packages/react/tsconfig.json, packages/vue/tsconfig.json, tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "26 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 26,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 57750,
"source_files_sampled": 1682,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/1682 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1682,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "moderate",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"example_dirs": [
"example",
"examples",
"recipes"
],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "example, examples, recipes",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example, examples, recipes"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index npm:@expcat/tigercat-cli@2.0.19; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-22T23:58:37.267088Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/e/expcat/Tigercat.svg",
"full_name": "expcat/Tigercat",
"license_state": "standard",
"license_spdx": "MIT"
}