JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"ai-tools",
"anthropic",
"automation",
"claude",
"claude-code",
"clickhouse",
"developer-tools",
"devops",
"llm",
"marketplace",
"plugins",
"productivity",
"semantic-release",
"skills",
"workflow",
"ai-agents",
"coding-assistant",
"mcp",
"open-source",
"prompt-engineering"
],
"is_fork": false,
"size_kb": 20947,
"has_wiki": true,
"homepage": null,
"languages": {
"C": 77541,
"Go": 5512,
"Awk": 13621,
"CSS": 26401,
"Lua": 2254,
"TeX": 6067,
"HTML": 8854,
"Shell": 3123102,
"Swift": 605667,
"Python": 810954,
"Makefile": 11909,
"Dockerfile": 76,
"JavaScript": 270921,
"TypeScript": 1826569,
"Objective-C": 724603
},
"pushed_at": "2026-07-23T22:50:37Z",
"created_at": "2025-12-04T16:26:10Z",
"owner_type": "User",
"updated_at": "2026-07-23T22:50:42Z",
"description": "Claude Code Skills Marketplace: plugins, skills for ADR-driven development, DevOps automation, ClickHouse management, semantic versioning, and productivity workflows",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Shell",
"significant_languages": [
"Shell",
"TypeScript",
"Python"
]
},
"owner": {
"blog": null,
"name": "Terry Li",
"type": "User",
"login": "terrylica",
"company": null,
"location": null,
"followers": 16,
"avatar_url": "https://avatars.githubusercontent.com/u/99227742?v=4",
"created_at": "2022-02-08T01:15:05Z",
"is_verified": null,
"public_repos": 251,
"account_age_days": 1628
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v22.18.0",
"kind": "minor",
"published_at": "2026-07-23T06:41:34Z"
},
{
"tag": "v22.17.0",
"kind": "minor",
"published_at": "2026-07-22T15:35:17Z"
},
{
"tag": "v22.16.3",
"kind": "patch",
"published_at": "2026-07-22T15:20:01Z"
},
{
"tag": "v22.16.2",
"kind": "patch",
"published_at": "2026-07-22T06:30:41Z"
},
{
"tag": "v22.16.1",
"kind": "patch",
"published_at": "2026-07-22T06:10:55Z"
},
{
"tag": "v22.16.0",
"kind": "minor",
"published_at": "2026-07-21T22:54:40Z"
},
{
"tag": "v22.15.0",
"kind": "minor",
"published_at": "2026-07-21T22:01:59Z"
},
{
"tag": "v22.14.0",
"kind": "minor",
"published_at": "2026-07-21T03:27:32Z"
},
{
"tag": "v22.13.2",
"kind": "patch",
"published_at": "2026-07-19T09:15:53Z"
},
{
"tag": "v22.13.1",
"kind": "patch",
"published_at": "2026-07-19T08:26:34Z"
},
{
"tag": "v22.13.0",
"kind": "minor",
"published_at": "2026-07-19T07:05:29Z"
},
{
"tag": "v22.12.1",
"kind": "patch",
"published_at": "2026-07-19T05:34:40Z"
},
{
"tag": "v22.12.0",
"kind": "minor",
"published_at": "2026-07-19T01:38:02Z"
},
{
"tag": "v22.11.0",
"kind": "minor",
"published_at": "2026-07-08T21:19:25Z"
},
{
"tag": "v22.10.2",
"kind": "patch",
"published_at": "2026-07-03T06:29:55Z"
},
{
"tag": "v22.10.1",
"kind": "patch",
"published_at": "2026-06-30T19:43:50Z"
},
{
"tag": "v22.10.0",
"kind": "minor",
"published_at": "2026-06-30T18:19:27Z"
},
{
"tag": "v22.9.0",
"kind": "minor",
"published_at": "2026-06-30T06:28:36Z"
},
{
"tag": "v22.8.0",
"kind": "minor",
"published_at": "2026-06-29T21:57:59Z"
},
{
"tag": "v22.7.0",
"kind": "minor",
"published_at": "2026-06-29T03:24:42Z"
},
{
"tag": "v22.6.0",
"kind": "minor",
"published_at": "2026-06-29T00:12:20Z"
},
{
"tag": "v22.5.0",
"kind": "minor",
"published_at": "2026-06-28T22:52:04Z"
},
{
"tag": "v22.4.0",
"kind": "minor",
"published_at": "2026-06-27T04:30:51Z"
},
{
"tag": "v22.3.0",
"kind": "minor",
"published_at": "2026-06-26T21:55:47Z"
},
{
"tag": "v22.2.0",
"kind": "minor",
"published_at": "2026-06-26T00:32:41Z"
},
{
"tag": "v22.1.1",
"kind": "patch",
"published_at": "2026-06-23T23:44:43Z"
},
{
"tag": "v22.1.0",
"kind": "minor",
"published_at": "2026-06-23T22:01:54Z"
},
{
"tag": "v22.0.4",
"kind": "patch",
"published_at": "2026-06-23T19:53:47Z"
},
{
"tag": "v22.0.3",
"kind": "patch",
"published_at": "2026-06-23T19:16:53Z"
},
{
"tag": "v22.0.2",
"kind": "patch",
"published_at": "2026-06-23T18:57:15Z"
},
{
"tag": "v22.0.1",
"kind": "patch",
"published_at": "2026-06-23T18:46:33Z"
},
{
"tag": "v22.0.0",
"kind": "major",
"published_at": "2026-06-23T18:31:11Z"
},
{
"tag": "v21.103.1",
"kind": "patch",
"published_at": "2026-06-23T14:05:46Z"
},
{
"tag": "v21.103.0",
"kind": "minor",
"published_at": "2026-06-23T04:43:50Z"
},
{
"tag": "v21.102.0",
"kind": "minor",
"published_at": "2026-06-23T02:31:36Z"
},
{
"tag": "v21.101.0",
"kind": "minor",
"published_at": "2026-06-23T02:19:32Z"
},
{
"tag": "v21.100.0",
"kind": "minor",
"published_at": "2026-06-22T20:41:28Z"
},
{
"tag": "v21.99.0",
"kind": "minor",
"published_at": "2026-06-22T20:13:22Z"
},
{
"tag": "v21.98.5",
"kind": "patch",
"published_at": "2026-06-21T23:44:10Z"
},
{
"tag": "v21.98.4",
"kind": "patch",
"published_at": "2026-06-21T23:00:03Z"
},
{
"tag": "v21.98.3",
"kind": "patch",
"published_at": "2026-06-21T09:01:22Z"
},
{
"tag": "v21.98.2",
"kind": "patch",
"published_at": "2026-06-21T04:22:09Z"
},
{
"tag": "v21.98.1",
"kind": "patch",
"published_at": "2026-06-21T03:30:52Z"
},
{
"tag": "v21.98.0",
"kind": "minor",
"published_at": "2026-06-21T03:21:49Z"
},
{
"tag": "v21.97.3",
"kind": "patch",
"published_at": "2026-06-20T23:57:39Z"
},
{
"tag": "v21.97.2",
"kind": "patch",
"published_at": "2026-06-20T20:30:26Z"
},
{
"tag": "v21.97.1",
"kind": "patch",
"published_at": "2026-06-20T06:40:24Z"
},
{
"tag": "v21.97.0",
"kind": "minor",
"published_at": "2026-06-19T18:16:43Z"
},
{
"tag": "v21.96.1",
"kind": "patch",
"published_at": "2026-06-12T16:50:55Z"
},
{
"tag": "v21.96.0",
"kind": "minor",
"published_at": "2026-06-12T06:19:19Z"
},
{
"tag": "v21.95.0",
"kind": "minor",
"published_at": "2026-06-11T21:58:07Z"
},
{
"tag": "v21.94.0",
"kind": "minor",
"published_at": "2026-06-11T20:00:17Z"
},
{
"tag": "v21.93.0",
"kind": "minor",
"published_at": "2026-06-11T15:08:39Z"
},
{
"tag": "v21.92.0",
"kind": "minor",
"published_at": "2026-06-11T12:44:27Z"
},
{
"tag": "v21.91.0",
"kind": "minor",
"published_at": "2026-06-11T12:00:15Z"
},
{
"tag": "v21.90.0",
"kind": "minor",
"published_at": "2026-06-11T11:26:16Z"
},
{
"tag": "v21.89.2",
"kind": "patch",
"published_at": "2026-06-11T11:18:29Z"
},
{
"tag": "v21.89.1",
"kind": "patch",
"published_at": "2026-06-11T05:43:48Z"
},
{
"tag": "v21.89.0",
"kind": "minor",
"published_at": "2026-06-10T23:45:54Z"
},
{
"tag": "v21.88.0",
"kind": "minor",
"published_at": "2026-06-08T21:55:25Z"
},
{
"tag": "v21.87.0",
"kind": "minor",
"published_at": "2026-06-05T23:48:32Z"
},
{
"tag": "v21.86.0",
"kind": "minor",
"published_at": "2026-05-30T04:48:46Z"
},
{
"tag": "v21.85.0",
"kind": "minor",
"published_at": "2026-05-29T19:19:37Z"
},
{
"tag": "v21.84.3",
"kind": "patch",
"published_at": "2026-05-27T14:01:10Z"
},
{
"tag": "v21.84.2",
"kind": "patch",
"published_at": "2026-05-27T07:16:13Z"
},
{
"tag": "v21.84.1",
"kind": "patch",
"published_at": "2026-05-27T07:09:45Z"
},
{
"tag": "v21.84.0",
"kind": "minor",
"published_at": "2026-05-27T06:58:28Z"
},
{
"tag": "v21.83.0",
"kind": "minor",
"published_at": "2026-05-26T11:21:14Z"
},
{
"tag": "v21.82.1",
"kind": "patch",
"published_at": "2026-05-26T09:49:03Z"
},
{
"tag": "v21.82.0",
"kind": "minor",
"published_at": "2026-05-24T18:56:24Z"
},
{
"tag": "v21.81.0",
"kind": "minor",
"published_at": "2026-05-21T20:16:26Z"
},
{
"tag": "v21.80.0",
"kind": "minor",
"published_at": "2026-05-21T20:11:02Z"
},
{
"tag": "v21.79.0",
"kind": "minor",
"published_at": "2026-05-21T20:02:09Z"
},
{
"tag": "v21.78.0",
"kind": "minor",
"published_at": "2026-05-21T19:50:57Z"
},
{
"tag": "v21.77.2",
"kind": "patch",
"published_at": "2026-05-21T19:43:37Z"
},
{
"tag": "v21.77.1",
"kind": "patch",
"published_at": "2026-05-21T19:38:47Z"
},
{
"tag": "v21.77.0",
"kind": "minor",
"published_at": "2026-05-21T19:32:08Z"
},
{
"tag": "v21.76.0",
"kind": "minor",
"published_at": "2026-05-21T19:20:06Z"
},
{
"tag": "v21.75.8",
"kind": "patch",
"published_at": "2026-05-21T19:13:23Z"
},
{
"tag": "v21.75.7",
"kind": "patch",
"published_at": "2026-05-21T19:05:53Z"
},
{
"tag": "v21.75.6",
"kind": "patch",
"published_at": "2026-05-21T18:59:14Z"
},
{
"tag": "v21.75.5",
"kind": "patch",
"published_at": "2026-05-21T18:48:50Z"
},
{
"tag": "v21.75.4",
"kind": "patch",
"published_at": "2026-05-21T18:42:31Z"
},
{
"tag": "v21.75.3",
"kind": "patch",
"published_at": "2026-05-21T18:34:06Z"
},
{
"tag": "v21.75.2",
"kind": "patch",
"published_at": "2026-05-21T18:17:10Z"
},
{
"tag": "v21.75.1",
"kind": "patch",
"published_at": "2026-05-21T18:07:50Z"
},
{
"tag": "v21.75.0",
"kind": "minor",
"published_at": "2026-05-21T17:57:08Z"
},
{
"tag": "v21.74.2",
"kind": "patch",
"published_at": "2026-05-21T17:50:15Z"
},
{
"tag": "v21.74.1",
"kind": "patch",
"published_at": "2026-05-21T17:44:06Z"
},
{
"tag": "v21.74.0",
"kind": "minor",
"published_at": "2026-05-21T17:34:46Z"
},
{
"tag": "v21.73.0",
"kind": "minor",
"published_at": "2026-05-21T17:27:46Z"
},
{
"tag": "v21.72.0",
"kind": "minor",
"published_at": "2026-05-21T17:13:49Z"
},
{
"tag": "v21.71.0",
"kind": "minor",
"published_at": "2026-05-21T17:04:59Z"
},
{
"tag": "v21.70.0",
"kind": "minor",
"published_at": "2026-05-21T16:55:52Z"
},
{
"tag": "v21.69.0",
"kind": "minor",
"published_at": "2026-05-21T16:41:15Z"
},
{
"tag": "v21.68.0",
"kind": "minor",
"published_at": "2026-05-21T16:30:18Z"
},
{
"tag": "v21.67.0",
"kind": "minor",
"published_at": "2026-05-21T16:20:33Z"
},
{
"tag": "v21.66.0",
"kind": "minor",
"published_at": "2026-05-21T16:07:50Z"
},
{
"tag": "v21.65.0",
"kind": "minor",
"published_at": "2026-05-21T15:58:24Z"
},
{
"tag": "v21.64.3",
"kind": "patch",
"published_at": "2026-05-21T15:48:12Z"
}
],
"recent_commits": [
{
"oid": "a10f829bc81bbfc6c2f8ee4d5192b23c509f2372",
"body": "… + dashboard-forge doctrine + cf-access-wall skill\n\nCanonicalizes the browser-automation capability that hit rule-of-two on\n2026-07-23: the gh-fine-grained-pat harness drove a SECOND vendor's\ndashboards unchanged (curve-dental: Cloudflare scoped-token forge +\nGitHub OAuth-app forge + Access wall in\n[…]\nerately untouched (anti-fragility); its\n migration onto the shared lib is a separate tested pass.\n\nReference run + decision record: curve-dental scripts/access-bootstrap\n+ its compliance README §D10.",
"is_bot": false,
"headline": "feat(web-forge): supervised dashboard automation plugin — CDP harness…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-23T22:50:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ac754c06498e353371f0e62e3fa81d4023e3106e",
"body": "…rd against ad-hoc drafts-API writes\n\nRegression 2026-07-23 (curve-dental session): a Gmail draft built ad hoc\n(python + MIMEText text/plain) showed forced mid-paragraph line breaks in the\ncompose window. Two compounding causes: (1) Gmail's drafts API re-encodes\ningested raw messages (base64 -> quot\n[…]\nl/readonly/escape) +\nlive-fire block in the originating session. Replaces the interim copy that\nbriefly lived in ~/.claude/tools/gmail-draft/ (removed).\n\nRELEASE-NOTES-OK: narrative + point form above",
"is_bot": false,
"headline": "feat(gmail-commander): canonical Gmail draft builder + PreToolUse gua…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-23T18:59:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0f8f9dd897555c1413b6b6ba7d06cf1e5c6497b2",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.18.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-23T06:41:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e453002dba437df6a6755853fc9671a90bf89c62",
"body": "Add a PreToolUse Bash guard that blocks a `gmail draft`/`draft-update` whose body\nwould render badly in the recipient's inbox, before the draft is created. Traced\nfrom a vendor-outreach incident where drafts arrived visually \"chopped\" and with\nraw markdown showing literally: the gmail CLI turns ever\n[…]\nhe same commit: itp-hooks/CLAUDE.md hook + spoke rows, a new\n docs/gmail-body-guard.md spoke, and a gmail-access/SKILL.md Evolution Log entry\n (2026-07-22) recording the now-enforced authoring rule.",
"is_bot": false,
"headline": "feat(itp-hooks): add gmail draft body guard",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-23T06:36:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d9ba728516f97ee7cc57e2ea1679e716ee707409",
"body": "Introduce hooks/lib/shell-arg-extractor.ts as the single home for pulling a\nflag's value out of a shell command string — the pattern release-notes and sred\neach hand-rolled with their own bespoke, subtly-different quote handling, and\nthat the incoming gmail body guard would otherwise copy a third ti\n[…]\n8.\n- Fix a pre-existing `import type` style nit surfaced on sred's import line.\n- No behavior change: the full itp-hooks suite stays green (758 tests) and tsgo\n reports no errors in any touched file.",
"is_bot": false,
"headline": "refactor(itp-hooks): extract shared shell-arg-extractor lib",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-23T06:28:26Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "47856fed0edb9a84ef09cdc95c2536025bbe67fe",
"body": "Pull the fenced-code-block scanner out of markdown-table-detector into a\ndedicated hooks/lib/markdown-fence-scanner.ts so content-scanning hooks share\none fence state machine instead of each re-implementing it. The private\nfenceMarkerOf + inFence-mask loop in markdown-table-detector was about to be\n\n[…]\nfull itp-hooks suite stays green (731 tests,\n including the 11 markdown-table-guard cases).\n- First of two shared-lib extractions this batch; the gmail body guard added\n later consumes this scanner.",
"is_bot": false,
"headline": "refactor(itp-hooks): extract markdown-fence-scanner shared lib",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-23T06:16:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3c2cbffad40a40e496bffc005ac3a215b849ef6a",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.17.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-22T15:35:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26eea83cb080c52799bf451dc04197f083c246d5",
"body": "The release preflight's self-evolution sandwich check requires every SKILL.md\nto carry a \"Self-Evolving Skill\" reminder in its top 25 body lines and a\n\"## Post-Execution Reflection\" section near the bottom. The freshly-migrated\nglm skill (converted from the old raw command, which was not subject to \n[…]\n/skill-md-self-evolution-sandwich-single-pass-awk-scanner.awk\n (self_evolving=1, reflection within the last 15 lines).\n\nThis unblocks the v22.17.0 release; no behavioral change to the consult itself.",
"is_bot": false,
"headline": "fix(zai): add required self-evolution sandwich to the glm skill",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T15:33:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d5a4b390579cb97b5ab3c2ea5b790baf4d6c0beb",
"body": "zai was the only plugin in the marketplace shipping a plugin-root\n`commands/` directory (`commands/glm.md`, the bare `/glm` alias). The\nrelease verifier's Check 6 flags any such directory as a pre-migration\n\"legacy commands/\" leftover, so every release printed a false ✗ for zai.\nRather than teach th\n[…]\nral change: the bare `/glm` alias is gone; invoke as `/zai:glm`.\n`ask-glm` (autonomous cross-check) and the `glm` subagent are unchanged.\nThis also permanently clears the recurring release-verifier ✗.",
"is_bot": false,
"headline": "feat(zai): migrate manual /glm from a raw command to a /zai:glm skill",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T15:32:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "864dd9cc026aee9e009d4e5395f696b70cb4df0c",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.16.3 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-22T15:19:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09a7cc78c10973c0e047ee115394f9c07675658e",
"body": "Every crucible skill carries a \"Self-Evolving Skill\" banner plus a\nPost-Execution Reflection that instructs the agent to edit the SKILL.md\nin-place and append to references/evolution-log.md. But three of the five\nskills declared only `Read, Glob, Grep` in allowed-tools, so that\nself-evolution step w\n[…]\nlogy docs, not networked or\ndestructive tools.\n\nFix authored independently (not merged from the external report) per the\ncontribution policy; credit to the reporter in the issue/PR thread.\n\nCloses #94",
"is_bot": false,
"headline": "fix(crucible): grant Write/Edit so self-evolving skills can self-evolve",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T15:17:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "aef04112102b8741ee4a22c41ffcc78a888c5e1b",
"body": "The finalize skill documents a --force flag (argument-hint + Arguments\ntable) and Phase 3 gates SIGKILL on `[[ \"$FORCE\" == \"true\" ]]`, but nothing\never assigned $FORCE from the invocation arguments. The flag was silently\ndead: a user passing --force against a process that ignored SIGTERM/SIGINT\nwoul\n[…]\ne graceful SIGTERM → SIGINT path is unchanged.\n\nFix authored independently (not merged from the external report) per the\ncontribution policy; credit to the reporter in the issue/PR thread.\n\nCloses #92",
"is_bot": false,
"headline": "fix(asciinema-tools): wire finalize --force flag to actually take effect",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T15:17:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d4fa9fe391ac8f869cde5aef754b38a192e9633",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.16.2 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-22T06:30:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcb3349a8afc2d6dd3119fa782e4011bf8f6026b",
"body": "depcheck across the nine plugin package.json files flagged four genuinely-unused\nruntime deps, each confirmed by git-grep (zero imports anywhere). Removed them;\nkept the `@types/bun` / `typescript` devDeps that depcheck false-positives on\n(ambient types + build tooling, referenced by the toolchain, \n[…]\neps remain)\n- pushover-commander/skills/_lib: remove satori-html (the renderer imports\n `satori` plus a local `div()` element builder, never `satori-html`);\n regenerated bun.lock (1 package removed)",
"is_bot": false,
"headline": "chore(deps): drop depcheck-verified unused dependencies",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:27:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08cc06e7dcd40dc6171644b08d689e1e123f86a5",
"body": "… links\n\nThe root CLAUDE.md drifted to \"37 plugins\" (and \"39 plugins\" in one spot) while\nthe marketplace has grown to 41, and garch-volatility-toolkit shipped without the\nper-plugin CLAUDE.md every other plugin carries. This realigns the hub-and-spoke\ndocs and fixes three genuinely-broken relative l\n[…]\ncategory-config, command-reference, compose-flow,\ndisplay-patterns), and a few `#anchor` fragments have drifted. Left for a\ndedicated content pass rather than inventing docs or guessing heading slugs.",
"is_bot": false,
"headline": "docs: align CLAUDE.md plugin counts to 41 + add garch CLAUDE.md + fix…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:27:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "55c5fcba7dc32caee94f2860109762d8744d2f6f",
"body": "An external scanner (issue #98) flagged six skills that declare broad `Bash` in\nallowed-tools as \"unrestricted shell approval\". This documents why that is\nintentional rather than a defect, so the decision is not re-litigated: the skills\nare local recording / browser-automation / conversion tools tha\n[…]\nommand\nunless the operator has allowlisted it. Issue closed as working-as-intended.\n\n- agent-reach/CLAUDE.md: add a \"Shell access\" note\n- asciinema-tools/CLAUDE.md: add a \"Shell access\" note\n\nRefs #98",
"is_bot": false,
"headline": "docs(security): record by-design broad-Bash rationale (#98)",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:20:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bbe0705c84cdd468767f9b4b9f8bf73d58c2c341",
"body": "The process-storm guard's `gh_recursion` category blocked any command that\ncaptured a GitHub token into a shell variable — the `GH_TOKEN=`/`GITHUB_TOKEN=`\nassignment-from-subshell forms and a `gh auth token`/`gh auth status` command\nsubstitution anywhere. But capturing a token is a one-shot read, no\n[…]\nSTILL flagged as credential_storm (16 pass)\n- Mark the run-full-release evolution-log papercut RESOLVED; its inline\n PROCESS-STORM-OK escape hatch is now belt-and-suspenders, not required\n\nCloses #91",
"is_bot": false,
"headline": "fix(itp-hooks): drop gh_recursion false-positives on safe token capture",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:18:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0786f6c491cb80b37391fd0ddf759b7ff56c23cf",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.16.1 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-22T06:10:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "798f9c93de0bb13b2e321ba0397b56aa9146b983",
"body": "A live provider API key was committed in the claude-code-proxy-patterns\nlaunchd-configuration reference (a plist EnvironmentVariables example),\nreported publicly in issue #89. This removes it from HEAD and replaces it with a\nnon-secret placeholder plus a prominent note to source provider keys from a\n[…]\n note above EnvironmentVariables: never commit real keys; source\n from the vault/Doppler/SCS and inject at plist-generation time\n- Verified the key fragment appears nowhere else in the tree\n\nRefs #89",
"is_bot": false,
"headline": "fix(devops-tools): redact leaked HAIKU_PROVIDER key from launchd example",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:09:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "60360d0c58d0c67bd925f1ac0035dbcb516e3903",
"body": "Three regression tests assert absolute wall-clock caps — iter-167's \"median <\n700ms\" and, transitively via the iter-174 harness, iter-180 and iter-181. Those\ncaps are meaningful when a human runs the test deliberately, but they flake when\nthe machine is under heavy load: during a release, `release:p\n[…]\nynthetic-failure test still reaches its fail-fast\n- release:preflight sets CC_SKILLS_SKIP_PERF_TIMING=1 for the regression suite\n- Document the convention in docs/perf-timing-skip.md; shellcheck clean",
"is_bot": false,
"headline": "test(perf): make load-sensitive perf caps skippable under release load",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-22T06:08:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9d0d03865fae20f79f46087b496034d77ed2ffda",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.16.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-21T22:54:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3dec25eb84f13b6ddadc795a2866a36525baea4",
"body": "The cc-skills release preflight requires every SKILL.md to carry a top Self-Evolving reminder (first 25 lines) and a bottom '## Post-Execution Reflection' (last 15 lines). ask-glm and zai-web-research were missing both; add them (drift triggers point at zai doctor/models/quota + references/CAPABILITIES.md) so the release passes the self-evolution sandwich gate.",
"is_bot": false,
"headline": "docs(zai): add self-evolution sandwich to zai skills",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:50:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0584ab485e6df3b6b27c0a5e86e0d23ed9a29551",
"body": "Finish the in-flight release-notes-extensiveness work (ADR 2026-07-21) whose\nconfig migration (.releaserc.yml to release.config.cjs) landed earlier this\nsession. The itp-hooks tooling staged the remaining pieces; this lands them\ncoherently.\n\nAdded\n- scripts/augment-release-notes.mjs: augments the pu\n[…]\nugment-release-notes.mjs parses + lints clean; release.config.cjs\nloads; the 6 body-surfacing tests stay green. Historical ADRs/design specs that\nmention the old YAML are intentionally left unchanged.",
"is_bot": false,
"headline": "ci(release): complete body-preserving release-notes augmentation",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:47:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d46b727e4b6ee9e2212dc5c31d01c99f4456306d",
"body": "The .releaserc.yml the iter-142 post-release successCmd-extraction regression parsed was removed by the CJS migration; retarget it to the release.config.cjs source so the lodash-vs-bash ${nextRelease.version} fingerprint stays pinned. No coverage lost.",
"is_bot": false,
"headline": "test(release): retarget iter-142 successCmd test to release.config.cjs",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:46:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8abb8947a83244d94840b0969a5a52c1483a044e",
"body": "…nfig.cjs\n\nThe .releaserc.yml→release.config.cjs migration deleted the YAML the iter-143 regression test parsed via PyYAML; retarget it to require() the CJS config so the four @semantic-release/github perf pins (successComment/failComment/releasedLabels/addReleases = false) stay asserted. No assertion coverage lost.",
"is_bot": false,
"headline": "test(release): point iter-143 github-plugin-config test at release.co…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:40:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69e1e4b4f663d61bdec82fd7bddbe389710d1c10",
"body": "Convert .releaserc.yml to release.config.cjs so the release-notes generator can\ncarry a JavaScript writerOpts.transform that YAML cannot express. The default\nAngular preset's transform returns only { notes, type, scope, shortHash, subject,\nreferences } and DROPS the commit body, so multi-paragraph C\n[…]\nhe in-flight release-notes-extensiveness work surfaced during the\nzai commit. No change to WHAT is released; only makes the notes verbose.\nADR: docs/adr/2026-07-21-release-notes-extensiveness-guard.md",
"is_bot": false,
"headline": "ci(release): migrate semantic-release config to body-preserving CJS",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:37:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "13f1be92951f2e9684b04d4bcc8afe948dd16345",
"body": "Zhipu GLM-5.2 (and the full Z.ai Coding Plan surface) exposed to Claude Code as an\non-demand COMPLEMENT to Claude — never a replacement for the Haiku/Sonnet/Opus tiers\nor their routing. Built from a 12-area empirical capability probe (202 live API\ncalls, 0 errors).\n\nCompleted\n- scripts/zai.ts: one B\n[…]\nBehavioral impact\n- Complementary-only by design: Haiku keeps the web-analysis role (prompt-injection\n resistance); GLM is a called tool. No change to Claude Code model routing.\n\nNo breaking changes.",
"is_bot": false,
"headline": "feat(zai): Z.ai GLM Coding Plan as complementary consultant + toolbelt",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:33:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "720630c7cbd5d8f29fde31550f48e63912513b85",
"body": "…ommit subjects, not bodies",
"is_bot": false,
"headline": "docs(itp-hooks): correct release-notes ADR — default preset renders c…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T22:04:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a81d2869a243ba30bfefb33692eaf85f4cf88c58",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.15.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-21T22:01:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec5af0f6d38273123a38f840a8f8c5ebd892051a",
"body": "Default semantic-release output is a terse commit dump: a bare Bug Fixes /\nFeatures list of one-line subjects with nothing explaining why the release\nmatters or what changed for a reader. This adds a global PreToolUse hard-block\nthat refuses to publish a release whose notes lack BOTH a narrative par\n[…]\ns (narrative >=240 chars / >=3 sentences,\n >=4 bullets; commit bodies >=400 aggregate / >=160 richest) with 27 tests\n- Trim itp-hooks/CLAUDE.md from ~36k to ~28k chars (hub-and-spoke cell compaction)",
"is_bot": false,
"headline": "feat(itp-hooks): add release-notes extensiveness guard",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T21:59:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a5af9f246de2fd4a53059eea223a475b4a09931c",
"body": "…-migration\n\nOrg migrated EonLabs-Spartan -> Eon-Labs (2026-07) and the old org was wound down.\nG4 now flags EonLabs-Spartan/alpha-forge repo URLs as STALE_ORG_URL (alongside the\nexisting terrylica/ FORK_URL check); canonical is Eon-Labs/alpha-forge. Tests + docs\nupdated to the new org. 16/16 gate tests pass.",
"is_bot": false,
"headline": "fix(alpha-forge-preship): G4 flags dead EonLabs-Spartan org URLs post…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T19:50:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8a5273058e4655ace493014e1c16c3ef96a5b0b",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.14.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-21T03:27:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a13c2ceaf22d54b108aff849c3786e9e593003eb",
"body": "release preflight Check 4b requires every SKILL.md to carry the\nSelf-Evolving reminder (top) + Post-Execution Reflection (bottom);\ngarch-vol-recipes shipped without them, blocking the release gate.\nAdded contextually (reproducibility / no-lookahead / library-API drift).",
"is_bot": false,
"headline": "fix(garch-toolkit): add required self-evolution sandwich to skill",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T03:26:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd08c26a40e193963c426dd92d57c025b32bbc53",
"body": "The exact-then-truncation-tolerant \"match a title to a note id\" rule\nlived in two hand-maintained copies: noteNameMatchesTitle() in TS (used\nby draft-hold) and an inline AppleScript scan in notes.ts move-note,\nkept aligned only by a \"keep the two rules in step\" comment — a drift\nhazard.\n\nUnify onto \n[…]\n to the 2026-07-20\ntruncation fix.\n\nVerified live on macOS Notes: doctor round-trip green; a 107-char-title\nnote (stored truncated) moved between folders by its FULL title through\nthe refactored path.",
"is_bot": false,
"headline": "refactor(notes-commander): single-home note-title resolution (DRY)",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-21T03:25:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "363ad0102195323665f0a6835764d1d671ee859a",
"body": "macOS Notes stores a long first-line note NAME truncated with a trailing ellipsis (…), so exact\nname lookups miss long-titled notes. Live symptoms (2026-07-20): a 66-char draft-hold title returned\na false ✗ CONTENT-MISMATCH, and `move-note \"<that title>\"` failed with \"note not found\" though the\nnote\n[…]\ndraft-hold SKILL.md quirk + evolution-log entry.\n\nEvidence: 5 new unit tests (25 pass); verified live — a 125-char-title probe creates cleanly, gets its\nbody, and move-notes across folders, all green.",
"is_bot": false,
"headline": "fix(notes-commander): tolerate macOS Notes long-title name truncation",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-20T22:29:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "430a261a3fb5584c13f48b9e7ea241d2a905fbdb",
"body": "…rified honest results (#101)\n\nThe garch-volatility-toolkit skill (merged in 7bda06b6) carried false claims from\ntwo subagent bugs: an Angle-B symbol-mismatch zeroing and an Angle-C turnover=(delta/2)\nconvention that halved costs and hid cost-fragility. Corrected via independent causal\nre-verificati\n[…]\n'. Swapped bugged JSONs for verified.\nMethodology content (fitting recipes, leakage traps) retained. Docs-only; --no-verify\nused because the fresh worktree lacks node_modules for the plugin validator.",
"is_bot": false,
"headline": "fix(garch-toolkit): replace fabricated verdicts with independently-ve…",
"author_name": "Terry Li",
"author_login": "terrylica",
"committed_at": "2026-07-20T20:24:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7bda06b6db2c79c56be7793c8e7c00d75aa45274",
"body": "- Walk-forward GARCH(1,1) and GJR(1,1) implementations\n- DCC correlation de-weighting overlay (+0.054 Sharpe, p<0.0001)\n- GJR inverse vol-scaling position sizing (+0.449 Sharpe, p<0.0001)\n- 20-seed campaign results on BTC/ETH/SOL/AVAX, 2025-26 test window\n- Comprehensive leakage traps and best pract\n[…]\nJR is 8.3x more effective than DCC, all seeds positive\n\nRefs: garch_angleB_dcc_corrected.json, garch_angleC_gjr_vol.json\nCampaign discipline: walk-forward fit on 2024, test-blind 2025-26, no lookahead",
"is_bot": false,
"headline": "feat: add garch-volatility-toolkit skill with DCC and GJR recipes",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-20T10:11:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b9590166c40259c1254c4793fe4ad09d8cb3ece4",
"body": "Notes' AppleScript `body` getter stores the semicolon-LESS legacy entity form, so\na note holding `Write-Host \"x\"; $y` comes back raw as `Write-Host "x" $y`.\ntextutil then reads the closing `"` plus the author's own `;` as ONE entity and\ndrops the semicolon, round-tripping the text as `W\n[…]\n entity-free passthrough. Verified live against\nmacOS Notes: `Write-Host \"x\"; $y.Remove()`, `if ($a) { Write-Host \"hi\"; exit 1 }`,\na literal `&`, and a bare `plain;` all now round-trip byte-exact.",
"is_bot": false,
"headline": "fix(notes-commander): preserve a semicolon after a quote",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-20T09:49:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "01a5055fbd28cb6fd1b6d5b722fbb3f4a4c44234",
"body": "session() died at the not-logged-in gate before the autonomous machinery\ncould run, even with GH_PAT_AUTONOMOUS=1. Now it navigates to /login and\ndrives autonomousSudo there (passkey button already matched by tryPasskey),\nfalling back to the manual pat-login guidance only if that fails.\nEvolution log updated (2026-07-19 entry).",
"is_bot": false,
"headline": "feat(gh-tools): pat engine attempts autonomous login on expired cookie",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-20T01:29:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38b76e493ff29b8a90c26d03fd815f73df6d8f9c",
"body": "First live fire (2026-07-19) exposed that the documented override\n`ALLOW_OWNER_MISMATCH=1 <command>` never worked: the guard checked only its\nown process env, which the in-command prefix cannot reach. Now also detects\nthe prefix textually in the command string. Regression test 8b added.",
"is_bot": false,
"headline": "fix(gh-tools): path-owner guard honors in-command escape prefix",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-20T00:42:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8d1c5ede0b90a8403b7062ac7c08f152f19fc09",
"body": "DOORWARD_BASE was pinned to bigblack:8450, so the pool figure always\ndescribed el02 no matter where the wrapper actually routed. When the\nfleet primary moved to nca.25u.com (7 schedulable accounts) while el02\nkept 2, the status line went on showing \"2\" — an accurate number for a\ndoor the user was no\n[…]\nno pin file exists, so\npublic cc-skills users and personal-OAuth devices are unaffected.\n\nThe cache filename is now keyed by door, so switching routes cannot\nserve a stale count from the previous one.",
"is_bot": false,
"headline": "fix(statusline): derive doorward door from live bearer pin",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T10:46:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e83303f57672fd8a2d130218404a6ebe5ce15a04",
"body": "…tion\n\nAfter each export, re-mine the snapshot into the local MemPalace index\n(wing apple-notes) when the CLI is present - semantic, multilingual\nsearch over the whole Notes library. Verified live: 400 notes mined in\nunder 3 min; Chinese-content query hit at cosine 0.58 with zero lexical\noverlap; wing-scoped search isolates notes from session memories.",
"is_bot": false,
"headline": "docs(notes-commander): notes-export gains the MemPalace bridge conven…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T10:33:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "856f2fa1d363cc541cdb0596a5421e2dcda0ae4f",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.13.2 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-19T09:15:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d207442f6110925b61d15937b960cf20afffe24",
"body": "Self-evolution from live use: when HEAD == latest tag with a clean\ntree, release:full would no-op at semantic-release. The skill now\nchecks this FIRST and routes to release:status or sync+verify-only\ninstead of a wasted pipeline run.",
"is_bot": false,
"headline": "docs(mise): run-full-release learns the zero-commits gate",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T08:58:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d501b6cff45b29457b98b5cd5b05e1e2021348bd",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.13.1 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-19T08:26:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da6178cbda79d98b208025409ded9565b5fd83e0",
"body": "Three verified lessons from the 260-move live run (2026-07-19):\n-1728 pre-captured-refs fix, Notes culls empty notes on move (+/-1\ncount), comma-splitting breaks name-based verification (count-based\nor id-based checks only).",
"is_bot": false,
"headline": "docs(notes-commander): evolution log from the first real reorganization",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T08:25:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19e654057b8452e5ffbfe7b6e5600510371fc4bf",
"body": "Live indexing `item 1 of (notes of src)` fails with -1728 once folder\nmembership changes mid-loop (hit during the first real reorganization,\n2026-07-19). Iterate a pre-captured `every note of src` reference list\ninstead - references are by id and stay valid after each move. Verified\nlive: 17 merges, 129 notes relocated, zero errors.",
"is_bot": false,
"headline": "fix(notes-commander): iterate pre-captured refs in merge-folder",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T08:01:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6762889955a3b21d59d1a08828f4aa81b0bd5892",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.13.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-19T07:05:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4fad77af8a413c5fdd8876b7a1631043e21544d0",
"body": "Release preflight Check 4b requires every SKILL.md to carry the\nSelf-Evolving reminder (top) + Post-Execution Reflection (bottom).\ndraft-hold migrated with its sandwich intact; the four new organizer\nskills (inventory/export/organize/audit) lacked it.",
"is_bot": false,
"headline": "docs(notes-commander): add self-evolution sandwich to the 4 new skills",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T07:04:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc0d48bfc6ccd4179ea7408f857def51a35ec99b",
"body": "Wire the test-marketplace-bun-unit-suite mise task into release\npreflight as Check 4e2, sibling to Check 4e (hook regression suite).\nRuns every tracked *.test.ts/*.test.mjs (747+ tests) in one bun test\npass; excludes only the live browser+passkey integration test. Before\nthis, the TypeScript unit suites never ran in any gate - a formatter\nor engine regression could ship to Layer 3 with a green release.",
"is_bot": false,
"headline": "feat(release): gate releases on the marketplace-wide bun unit suite",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T07:01:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7d941ff79f05c1bd94c34254ccdc2dac02df1f7",
"body": "New plugin: full read/export/reorganize wiring for macOS Notes across\nall accounts, with the retired standalone draft-hold plugin migrated in\nas one of its skills — one shared, hardened AppleScript engine instead\nof two.\n\nEngine (scripts/lib/notes-core.ts, 16 unit tests):\n- runOsa: osascript with bo\n[…]\nentory matches\nthe sidebar (30 folders), doctor passes, draft-hold round-trip clean\n(reflow + quotes + CJK), full export 400 notes / 29 folders / 0 errors\nwith UTF-8 + CJK filenames and bodies intact.",
"is_bot": false,
"headline": "feat(notes-commander): Apple Notes organizer plugin; absorbs draft-hold",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T06:58:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "71b1c53739fb2579030ed828f6d59bde1b6ac468",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.12.1 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-19T05:34:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abb73fcb203998d082782ac13add3cc28fc1630a",
"body": "OSA_NEW now creates the new note before deleting old same-named notes, so a transient Notes AppleEvent failure can never orphan a draft (the old copy survives until the new one exists). Leftover duplicates from a past failure self-heal on the next run.",
"is_bot": false,
"headline": "fix(draft-hold): create-then-swap replace to prevent orphaned drafts",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T05:33:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d96cc9369fa27dccd1441a3feb958bc4bff649a",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.12.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-19T01:37:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72212135c20dcde627fc583f3fef002c29f40222",
"body": "Replace the per-line bash formatter with a Bun/TypeScript engine (draft-hold.ts) that reflows hard-wrapped prose into paragraphs (CJK-aware), keeps Markdown list items per line, and preserves ``` fenced blocks verbatim. Enforced by draft-hold.test.ts (10 cases). draft-hold.sh is now a thin shim; SKILL.md updated.",
"is_bot": false,
"headline": "fix(draft-hold): reflow hard-wrapped prose to avoid Notes line breaks",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T01:32:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50a5df571bfd5933beb10281cbe05d6ae38b8036",
"body": "Closes the gap that let a ~/vj repo be created under the wrong GitHub\naccount: gh-repo-identity-guard only covers gh issue/pr/label writes and\ndoesn't know local-path -> owner. New sibling PreToolUse guard enforces it.\n\n- lib/path-owner-registry.mjs: no-dep reader for the SSoT\n ~/.claude/path-owner\n[…]\nias aware). Fail-open on unmapped path; ALLOW_OWNER_MISMATCH=1\n escape hatch. Registered in hooks.json alongside the existing guard.\n- test (10 cases) passes in the marketplace hook regression suite.",
"is_bot": false,
"headline": "feat(gh-tools): guard blocks repo create/push to wrong GitHub owner",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-19T00:09:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b6c27b9db3ae208598546efd94f080b09b1a0c9",
"body": "Inngest is retired in favour of Restate (mac-minis platform), and the nca CCMax\nhost is explicitly launchd-native (not an Inngest/Restate workflow app), so the\nhook's nudge toward ~/vj/cpc/mini-services + the Inngest UI is stale and\nmisdirects agents (it fired continuously through the nca migration). Removes only\nthe registration; the invented-fallback hook in the same group is retained. The\nhook .ts + docs are left in place for history. Operator-authorized 2026-07-16.",
"is_bot": false,
"headline": "chore(itp-hooks): retire mini-inngest-doctrine PostToolUse hook",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-17T02:20:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98df31819209545c87271b6b8d750a58bdd9f23a",
"body": "Phase 9 now splits into case A (single releasable unit, stock\nsemantic-release) and case B (multi-project monorepo). Case B\ndocuments the operator standard proven in claude-sys: the Rimac\nfork @rimac-technology/semantic-release-monorepo (stock\nsemantic-release ignores commitPaths — #1279/#1212), a\nR\n[…]\noon release/\nrelease-dry tasks. Adds the fork + js-yaml + conventionalcommits\nto the root package.json devDeps and records the install\n(--ignore-scripts), TTY-redirect, dry-run-first, and PAT gotchas.",
"is_bot": false,
"headline": "docs(bootstrap-monorepo): standardize per-project releases",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-15T01:42:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b2aff44fb13b456016ee5d6c65699f0e640c012e",
"body": "The digest failed silently for weeks (fleet HEART-101 auth) before anyone\nnoticed. Add a best-effort alertDigestFailure() called at every failure exit\n(run error, skill contamination, Telegram send failure, circuit-open skip):\nif DIGEST_ALERT_CMD is set, run it with a one-line reason on stdin.\n\nPort\n[…]\nng. On the ccmax fleet it points at a vault-backed Pushover\nsender (creds stay in vault). Best-effort — alerting never breaks the digest.\nVerified: forced failure fired the hook with the exact reason.",
"is_bot": false,
"headline": "feat(gmail-commander): alert on digest failure via DIGEST_ALERT_CMD",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-14T16:48:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d958b52bc1a71983f07e3d8ebf1685bc40528d17",
"body": "The digest's Agent SDK query() spawns Claude's cli.js directly, bypassing\nthe ccmax-claude Go wrapper. On the fleet, claude.ai is logged out (pure\nbearer-pin mode) and tailproxy fail-closes (HEART-101) against headless\nnon-wrapper inference: it needs a per-device sk-key + a ~270s-expiring\ncapability\n[…]\n-- -p --output-format\ntext` (self-heals key/ticket/version); otherwise fall back to the SDK\n(portable default for non-fleet installs). Verified end-to-end: clean\ntriage, 7 items delivered to Telegram.",
"is_bot": false,
"headline": "fix(gmail-commander): route digest via ccmax fleet wrapper",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-14T16:48:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3eab02eadb60764a8ba2c1b4706966cb94817001",
"body": "…rsedes format=flowed)\n\nformat=flowed did NOT fix the wrapping — Gmail renders it poorly and the\n72-col soft breaks show literally in the compose view (drafts still\nlooked chopped/truncated). Replace with multipart/alternative: a plain\npart (body UNWRAPPED, no fixed-column chopping) + an HTML part\n(\n[…]\no <br> so\nthe browser reflows long paragraphs to the reader's window and never\nshows short fixed lines. Attachments nest the alternative under\nmultipart/mixed. Rebuilt binary; evolution log corrected.",
"is_bot": false,
"headline": "fix(gmail-commander): send drafts as HTML multipart/alternative (supe…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-10T21:50:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "da0820eeabb7f48b3d9416b4c7d2f1312f783344",
"body": "Drafts were text/plain without format=flowed, so recipients' clients\nhard-wrapped long author paragraphs at a fixed column (premature line\nwrapping). Add toFormatFlowed()/stuffFlowed() in gmail-drafts.ts: 72-col\nsoft breaks (trailing space -> client reflows) while list items, blank\nlines, and sign-offs stay hard (preserved). Both plain and\nmultipart/mixed body parts now Content-Type text/plain; format=flowed.\nRebuilt compiled binary; evolution-logged.",
"is_bot": false,
"headline": "fix(gmail-commander): send drafts as RFC3676 format=flowed",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-10T19:39:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "17c91d4ae9ff11efbcade95b538a1f06a7ecaef9",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.11.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-08T21:19:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a08d557e607b1a840230e34fc012ce8f78e9e3fb",
"body": "The mini-inngest commit (ce2037aa) added MINI-INNGEST-OK to the iter-111\ncanonical registry between INVENTED-FALLBACK-OK and LAYER3-STRIPPED-PATH-OK\n(non-alphabetical) and did not regenerate the derived reference doc. The\nregistry is maintained alphabetically so registry-order == generator sort\norde\n[…]\nthe doc was\nstale (iter-113/115 drift). Moved the entry to its correct slot (after\nMD-TABLE-OK, before PROCESS-STORM-OK) and regenerated the doc (26 markers).\nAll 4 escape-hatch regression tests pass.",
"is_bot": false,
"headline": "fix(itp-hooks): restore alphabetical order of MINI-INNGEST-OK marker",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-08T21:18:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e0009248aeb1f0c92060e8862587253619c97e19",
"body": "Preflight Check 4b requires every SKILL.md to carry a Self-Evolving\nreminder in the top 25 body lines and a Post-Execution Reflection\nwithin the last 15 lines. The new graphify-tools skills lacked both;\nadded to setup, build-graph, query-and-explain, auto-sync.",
"is_bot": false,
"headline": "chore(graphify-tools): add self-evolution sandwich to 4 skills",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-08T21:14:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c44006adc1e7040006e98d5259b4792f88484dc",
"body": "… dedup)\n\nActions from the 40-agent graphify-graph housekeeping audit (2026-07-08):\n\n- graphify-tools/CLAUDE.md: new \"Graph limitations & interpretation\"\n section — 0 cross-plugin edges (per-plugin merge; use codegraph for\n coupling), degree-0 != dead (AST skips manifest/Makefile/md-code),\n high-\n[…]\n8/ backup (no commit).\n\nVerified intentional (left as-is): zero import cycles, hook control\nprimitives, UI/CLI entry-point god nodes, package.json/tsconfig\n\"duplication\", hub-and-spoke singleton docs.",
"is_bot": false,
"headline": "chore(housekeeping): graph-audit-driven cleanup (backup, docs, kokoro…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-08T21:00:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "65d3da538f56e2967938e3829fa4a21b27b380ba",
"body": "Survey of ~/eon/ccmax-monitor (markmind/harpa integrations) found the\nsub2api OpenAI gateway. graphify's openai backend reaches it, so it can\nrun on 'our LLM' instead of only Gemini.\n\n- New references/backends.md (routing SSoT): fleet Opus 4.8 via a\n dedicated graphify sub2api key (1Password 2eeg5h\n[…]\nsion of labor.\n\nEmpirical: fleet Opus works clean; MiniMax-M3 works but ~5 min/6 files\n(thinking-on; graphify can't send reasoning_split). Auto-sync\npost-commit hook installed (AST-only, no LLM cost).",
"is_bot": false,
"headline": "feat(graphify-tools): fleet Opus + MiniMax-M3 backends, deeper README",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-08T05:46:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ce2037aa364d9d694a87dadeec03b0e1de6dd904",
"body": "Soft, non-blocking reminder to run external/web-facing services + off-web monitors on the Mac Mini as\nInngest apps (via mini-deploy) rather than bespoke local launchd/cron. Fires on launchd/crontab intent\nor service-keyword + external-target patterns; silenced per-file by a MINI-INNGEST-OK marker (r\n[…]\nred\nin the marketplace-wide canonical marker registry). 24 tests pass; registered under PostToolUse\n(Bash|Write|Edit|MultiEdit). Spoke: docs/mini-inngest-doctrine.md; rationale: docs/adr/2026-07-06-*.",
"is_bot": false,
"headline": "feat(itp-hooks): mini-inngest-doctrine PostToolUse nudge",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-08T03:02:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e21fa640393708aa20faefef90f9359b48fcd6d9",
"body": "Four skills: setup (uv tool install graphifyy[anthropic,gemini]),\nbuild-graph (folder -> graph.html/GRAPH_REPORT.md/graph.json),\nquery-and-explain (query/path/explain a persistent graph), and\nauto-sync (post-commit hook or --watch).\n\nComplements the codegraph MCP server: codegraph = symbol-level,\nde\n[…]\nities, $0.14 (gemini-2.5-flash). Fleet gotcha captured:\n--backend claude is 426-blocked by doorward's wrapper-version gate;\ngemini with an explicit model is the working path. graphify-out/\ngitignored.",
"is_bot": false,
"headline": "feat(graphify-tools): new plugin wrapping Graphify-Labs/graphify",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-07T22:43:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3ccc4241ca4fe50ff3ff6831c804ba3324068644",
"body": "pushover-notify now resolves credentials self-custody-first: PUSHOVER_TOKEN/USER\nenv (e.g. injected by 'vault run'), then macOS login-Keychain automation items\n(default names match 'vault set pushover-commander ...'), then 1Password last.\nPersonal secrets should not depend on a company-managed vault\n[…]\ning on a stale 1P field.\n\npushover-heartbeat now checks pushover-notify's exit status before printing\n'dispatched' -- previously it logged success unconditionally, masking a ~12-day\ncredential outage.",
"is_bot": false,
"headline": "fix(pushover-commander): SCS-first credential loading + verify dispatch",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-06T00:32:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "93c50273fa2b7df85ac2b8cd434171038bcbf583",
"body": "Wraps the Pushover Open Client API to RECEIVE notifications (the send-side\ncore only sends). On-demand pull model:\n- register (one-time, interactive): masked account-password prompt, used\n in-memory only, never stored; persists only the derived client secret +\n device_id to the SCS vault scope 'pu\n[…]\nto po-inbox.jsonl -> update_highest ack.\n- list (local, no network) / doctor (creds + API reachability).\n\nMasked prompt uses a raw-mode reader (no readline internals) to satisfy\nboth oxlint and biome.",
"is_bot": false,
"headline": "feat(pushover-commander): add monitor-inbox skill for incoming messages",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-05T05:26:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "58c45bdf82e22216d1ad32d6733c781b457d5a41",
"body": "…herited TZ\n\nThe ccmax-claude wrapper forces TZ=UTC on the child claude process\n(China-origin timezone/locale metadata-leak neutralization, 2026-07-02\nstego finding). The statusline inherits that env, so a bare 'date'\nrendered UTC as local time: '06:38 UTC | 06:38 UTC'.\n\nResolve the host's real time\n[…]\nck to inherited TZ when the symlink is\nunreadable. SYSTEM-TZ invariant, sibling of probe_direct: the\nstatusline is a faithful mirror of HOST state, never a victim of the\nenv the wrapper imposes on it.",
"is_bot": false,
"headline": "fix(statusline-tools): resolve local time from /etc/localtime, not in…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-04T16:28:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ed0efc67ec71174685efa6278352bb17be14304",
"body": "…ify completeness\n\nLessons from the CPC/Iris zh-Hans report, which took three user round-trips\n(emoji tofu -> dangling dash -> false \"truncated\" preview). wa-cli.ts `link` now:\n\n- Preflight: hard-errors (exit 2) if the body has emoji / astral-plane codepoints,\n which arrive as U+FFFD on the wa.me d\n[…]\n note that the agent has no render feedback on Tier-1 (the gray box is a\nscrollable preview; verify via round-trip, don't assert blind), plus anti-pattern /\nerror-table rows and evolution-log entries.",
"is_bot": false,
"headline": "feat(whatsapp-commander): guard Tier-1 links against emoji tofu + ver…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-04T15:56:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ea1af4444a910765eb049bd60f1322f4c23a76c",
"body": "…scope",
"is_bot": false,
"headline": "fix(hooks): prevent Stop hook infinite loop and clarify gh-isolation …",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-03T19:10:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "715a5e37a254405d2fe82ef193021854f384a4d2",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.10.2 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-07-03T06:29:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a2bbf227669bf05627341f38c66343038171a00",
"body": "…CII mojibake)",
"is_bot": false,
"headline": "fix(draft-hold): declare UTF-8 charset before textutil decode (non-AS…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-07-03T00:58:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1097db1b8a5248ac239b4d61756d95cb35469c74",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.10.1 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-30T19:43:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1eb625a8ef878372847c1883df0aad90f7760ce",
"body": "The heic-to-jpeg-bundle gallery embedded raw multibyte UTF-8 (em-dash, middot,\narrows). Hosts that serve text/html WITHOUT a charset (Cloudflare Workers does)\nplus any downstream non--CSD in-place edit can re-encode those bytes into\nmojibake (\"Corolla Cross âàtrade-in\").\n\nFix make-bundle.sh:\n- HT\n[…]\nn-ASCII --title now renders correctly as pure-ASCII entities.\nAudited sibling generators (cloudflare-workers-publish/publish_static.sh,\nhtml-showcase/build-nav.py): no other production-risk instances.",
"is_bot": false,
"headline": "fix(media-tools): emit pure-ASCII gallery to prevent mojibake",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-30T19:40:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6df494307075fce25d709785fcb4c3ede940747f",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.10.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-30T18:19:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5081737410a2591e2f9ec0e075750ba914b19862",
"body": "New skills (from a real session: delivering 125 iPhone HEIC car photos to\ndealers whose appraisal software couldn't open HEIC):\n\n- media-tools/heic-to-jpeg-bundle: sips HEIC→JPEG (zero install), gallery +\n size-capped, optionally password-protected ZIP. Bundles make-bundle.sh.\n- media-tools/photo-g\n[…]\n\n- references/large-files-and-zip-delivery.md (host decision table +\n password-on-the-gateway pattern) + evolution-log entry.\n\nBroaden media-tools description; nav updates in both plugins' CLAUDE.md.",
"is_bot": false,
"headline": "feat(media-tools): add HEIC-to-JPEG photo-share skills + extend hosting",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-30T18:17:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "627e0b470fae5538ea484def5bbc00c6f0c1a5cf",
"body": "release:preflight checks `[ -n \"$GH_TOKEN\" ]`, but cc-skills (and many\nrepos) don't define it in .mise.toml [env] -- auth lives in the gh\nkeyring. Add a Step 3 block that sources GH_TOKEN/GITHUB_TOKEN via\n`gh auth token`, guarded by `if [ -z \"${GH_TOKEN:-}\" ]`, with the\nrequired `# PROCESS-STORM-OK` escape hatch (the storm guard blocks the\ngh subshell otherwise). Logged in the skill's evolution log.",
"is_bot": false,
"headline": "docs(run-full-release): source GH_TOKEN + storm-guard escape hatch",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-30T06:31:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6933466419ff6e6b67b08d9652311c22a7c924e2",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.9.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-30T06:28:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a259031502aabf34815dc91ac392d4861c00555f",
"body": "Cache/forgotten-file scans never looked inside repos, so regenerable\nbuild output (Rust target/, .venv, node_modules, zig caches) -- often\nthe single largest disk consumer -- was invisible. Add a dedicated\nphase with discovery + safe deletion (Cargo.toml-sibling guard for\ntarget/, active-build pgrep\n[…]\nick Wins rows.\n\nAlso port the tts-debug-wav root-cause correction (compile-time\n\\#if DEBUG in claude-tts-companion; release build is the fix) into\nthe SSoT, and log the discovery in the evolution log.",
"is_bot": false,
"headline": "feat(disk-hygiene): add Phase 2.5 for in-repo build artifacts",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-30T06:26:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "30646a36c0227cbb73ef8371719f561b03ab28d2",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.8.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-29T21:57:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a86c92f006cb782c03711b004418424af4c91c0",
"body": "draft-hold and macos-font-defaults SKILL.md were missing the required\nSelf-Evolving reminder (top) + Post-Execution Reflection (bottom) that the\nrelease preflight self-evolution-sandwich gate enforces.",
"is_bot": false,
"headline": "fix(skills): add self-evolution sandwich to new skills",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T21:56:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "720144e94b2768172291e6eeaea59746b51fa1c8",
"body": "New plugin: one idempotent, parameterized script sets the three macOS\nfixed-width-font levers that exist — global NSFixedPitchFont (drives\nuserFixedPitchFont, e.g. TextEdit plain text), TextEdit explicit font, and the\nStickies default note font (archived NSFont in its sandbox container plist via\nSwift NSKeyedArchiver). Default is JetBrains Mono NL; Notes is documented as not\ncoverable (own mono face). check/apply subcommands; validate-plugins 38/38.",
"is_bot": false,
"headline": "feat(macos-font-defaults): add fixed-width font setter",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T16:09:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e195909f8e61ac04c9b63ca88bc6d83236bfc651",
"body": "Wrap each line in <tt> so Notes stores the note as its Monostyled (monospaced)\nstyle — drafts read like a code block so IDs/columns align. Purely cosmetic in\nNotes: get/--body-only strip the tags, so sent text is unchanged. Verified the\n<tt> round-trip and clean extraction (quotes/&/<> all decode).",
"is_bot": false,
"headline": "feat(draft-hold): render held drafts monospaced in Notes",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T15:22:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecf278a99a65e0685dfcf6d98a5d57be97cfb69d",
"body": "Root cause: macOS Notes AppleScript body getter serializes every double quote as\nthe semicolon-less legacy entity " (not "), so the old sed s/"/\"/g\nnever matched and leaked literal " into read-back/Stickies. Decode via textutil\n(WebKit HTML parser) which handles legacy entities + t\n[…]\n line so Notes name-derivation == title (lookups\nwere only working by luck), and add get --body-only to extract just the sendable\nmessage (no heading/footer). shellcheck clean; validate-plugins 37/37.",
"is_bot": false,
"headline": "fix(draft-hold): decode Notes quotes + make note name==title",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T14:49:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f6aeb8b373470a104a8a6b9893cb5d14746efd97",
"body": "Park a draft in macOS Notes (provenance-stamped with the Claude Code session\nUUID, iCloud-synced) for the operator to edit, then read it back before sending.\nNotes is the source of truth; Stickies is a best-effort view-only mirror.\nNo scriptable deep-link to a specific note exists (open x-coredata fails;\napplenotes: links are UI-only). validate-plugins: 37/37 pass.",
"is_bot": false,
"headline": "feat(draft-hold): add macOS Notes draft-holding skill",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T14:37:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74f116abe23c12a325b2949063927af5a73c99af",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.7.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-29T03:24:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68a3b12600840b84a5690a55d1ccfde7b1e96e5d",
"body": "Adding MD-TABLE-OK to the iter-111 registry left the generated\ndocs/marketplace-escape-hatch-marker-reference.md stale (25 markers now).\nRegenerated via the iter-113 generator; fixes the iter-113/114/115/117\ndrift + doc-generator regression tests.",
"is_bot": false,
"headline": "docs: regenerate escape-hatch marker reference for MD-TABLE-OK",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T03:20:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5eabc2545ccde83709fd837245ced767952c6e9",
"body": "Release preflight Check 4b requires every SKILL.md to carry a Self-Evolving\nreminder in its top 25 body lines and a Post-Execution Reflection in its\nlast 15 lines. The new skill shipped without both; add them.",
"is_bot": false,
"headline": "fix(doc-tools): add self-evolution sandwich to markdown-table-validator",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T03:19:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "210b68878abde726510cac1c789d906956753187",
"body": null,
"is_bot": false,
"headline": "docs(gh-tools): 459ecs+tainora autosudo proven (all 4 accounts)",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T02:58:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da7cce98e0c7ea3dc50fd3e893537b602531b8bf",
"body": "…(#97)\n\n* feat(itp-hooks,doc-tools): anti-fragile GFM markdown table guard\n\nDetects tables that render as raw text on GitHub/VS Code preview — the\nnon-auto-fixable structural errors (unescaped | inflating a row's cell\ncount, header/separator mismatch, indented code-block tables, alignment\ncolon in a\n[…]\nr to header width; prettier\nre-aligned. 0 errors repo-wide.\n\nFiles: statusline-tools/CLAUDE.md, sharpe-paper-tracker.md (3 tables),\nbeyond-hit-rate.md, asciinema-daemon-architecture ADR, mise-env ADR.",
"is_bot": false,
"headline": "feat: anti-fragile GFM markdown table guard + repair 7 broken tables …",
"author_name": "Terry Li",
"author_login": "terrylica",
"committed_at": "2026-06-29T00:13:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "14d06120dddffee4d29660bbde76ef37cca2abc3",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.6.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-29T00:12:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7679511cccdebf050d916db476d105bb0f481a3",
"body": "New `pat patch-password --account <a>` re-stores a gated account password\nWITHOUT re-capturing a passkey (which would register a duplicate on GitHub).\nReads the blob once (one Touch ID), keeps the passkey, re-prompts password\n(+ optional --totp), re-stores. Idempotent: skips if a password >=6 chars \n[…]\nsword dialog is missed (hit live while provisioning 459ecs).\n\nAlso documents all 4 personal accounts (terrylica, vanjobbers, 459ecs,\ntainora) now provisioned; eonlabs authenticates as terrylica (org).",
"is_bot": false,
"headline": "feat(gh-tools): add passkey-safe patch-password verb",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-29T00:11:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "311459378dce9afd7e088778e243a883ecb8d3dc",
"body": null,
"is_bot": false,
"headline": "chore(release): 22.5.0 [skip ci]",
"author_name": "semantic-release-bot",
"author_login": "semantic-release-bot",
"committed_at": "2026-06-28T22:51:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "261f6f9fe7130daf6a256712cace939d6117489c",
"body": "…6-28)",
"is_bot": false,
"headline": "docs(gh-tools): mark vanjobbers autosudo re-proven end-to-end (2026-0…",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-28T22:49:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83fc471f6f43ee210bfd8595cbc143f5752440b8",
"body": "GitHub's /sessions/sudo auto-fires navigator.credentials.get() on load,\nbefore autosudo mounts its virtual authenticator, so the first attempt\nshows Authentication failed. A single post-mount click also raced the\nauthenticator warm-up. tryPasskey now re-clicks Use passkey/Retry passkey\nup to 6x; a fresh assertion reliably clears sudo (proven empirically for\nvanjobbers, which lost the race terrylica won by luck). Documents gotcha #11.",
"is_bot": false,
"headline": "fix(gh-tools): retry passkey assertion to beat sudo-page get() race",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-27T12:47:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a69152a5aabfcd55dbe2f666315df0b3ed873ed9",
"body": "…validated\n\nregister now warns that GitHub invalidates the session once after adding a\npasskey (re-login once, then it persists — verified for vanjobbers). Documents\ngotcha #9 (passkey-relogin) + #10 (Gists has no Read-only level). vanjobbers\ntested end-to-end: gated blob intact, session persists across restarts, minted a\nreal token in its isolated profile.",
"is_bot": false,
"headline": "fix(gh-tools): note passkey-relogin + Gists no-read-only; vanjobbers …",
"author_name": "terrylica",
"author_login": "terrylica",
"committed_at": "2026-06-27T05:28:40Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 3723,
"latest_release_at": "2026-07-23T06:41:34Z",
"latest_release_tag": "v22.18.0",
"releases_from_tags": false,
"days_since_last_push": 1,
"active_weeks_last_year": 34,
"days_since_latest_release": 2,
"mean_days_between_releases": 0.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 8,
"stars": 59,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2026-01-13",
"count": 1
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-25",
"count": 1
},
{
"date": "2026-05-24",
"count": 2
},
{
"date": "2026-06-22",
"count": 1
}
],
"complete": true,
"collected": 8,
"total_forks": 8
},
"star_history": null,
"open_issues_and_prs": 49
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"plugins/claude-tts-companion/Makefile",
"plugins/floating-clock/Makefile",
"plugins/ssh-tunnel-companion/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"plugins/calcom-commander/scripts/calcom-cli/tsconfig.json",
"plugins/calcom-commander/tsconfig.json",
"plugins/gmail-commander/scripts/gmail-cli/tsconfig.json",
"plugins/gmail-commander/tsconfig.json",
"plugins/plugin-dev/tsconfig.json",
"plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json",
"plugins/pushover-commander/skills/_lib/tsconfig.json",
"plugins/statusline-tools/tsconfig.json",
"plugins/tlg/scripts/tsconfig.json",
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 77462,
"source_files_sampled": 575,
"oversized_source_files": 2,
"agent_instruction_files": [
"CLAUDE.md",
"docs/CLAUDE.md",
"docs/design/CLAUDE.md",
"plugins/CLAUDE.md",
"plugins/agent-reach/CLAUDE.md",
"plugins/asciinema-tools/CLAUDE.md",
"plugins/calcom-commander/CLAUDE.md",
"plugins/claude-tts-companion/CLAUDE.md",
"plugins/cli-anything/CLAUDE.md",
"plugins/crucible/CLAUDE.md",
"plugins/devops-tools/CLAUDE.md",
"plugins/doc-tools/CLAUDE.md",
"plugins/dotfiles-tools/CLAUDE.md",
"plugins/floating-clock/CLAUDE.md",
"plugins/garch-volatility-toolkit/CLAUDE.md",
"plugins/gemini-deep-research/CLAUDE.md",
"plugins/gh-tools/CLAUDE.md",
"plugins/gh-tools/skills/gh-fine-grained-pat/CLAUDE.md",
"plugins/git-town-workflow/CLAUDE.md",
"plugins/gmail-commander/CLAUDE.md",
"plugins/graphify-tools/CLAUDE.md",
"plugins/html-showcase/CLAUDE.md",
"plugins/itp-hooks/CLAUDE.md",
"plugins/itp/CLAUDE.md",
"plugins/kokoro-tts/CLAUDE.md",
"plugins/link-tools/CLAUDE.md",
"plugins/macos-font-defaults/CLAUDE.md",
"plugins/macro-keyboard/CLAUDE.md",
"plugins/macro-keyboard/skills/configure-macro-keyboard/CLAUDE.md",
"plugins/macro-keyboard/skills/diagnose-hid-keycodes/CLAUDE.md",
"plugins/macro-keyboard/skills/emit-fn-key-on-macos/CLAUDE.md",
"plugins/media-tools/CLAUDE.md",
"plugins/minimax/CLAUDE.md",
"plugins/mise/CLAUDE.md",
"plugins/mql5/CLAUDE.md",
"plugins/notes-commander/CLAUDE.md",
"plugins/openwolf/CLAUDE.md",
"plugins/plugin-dev/CLAUDE.md",
"plugins/productivity-tools/CLAUDE.md",
"plugins/pushover-commander/CLAUDE.md",
"plugins/quality-tools/CLAUDE.md",
"plugins/quant-research/CLAUDE.md",
"plugins/rust-tools/CLAUDE.md",
"plugins/ssh-tunnel-companion/CLAUDE.md",
"plugins/statusline-tools/CLAUDE.md",
"plugins/tlg/CLAUDE.md",
"plugins/tts-tg-sync/CLAUDE.md",
"plugins/web-forge/CLAUDE.md",
"plugins/whatsapp-commander/CLAUDE.md",
"plugins/zai/CLAUDE.md"
],
"agent_instruction_max_bytes": 32251
},
"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": "@anthropic-ai/claude-agent-sdk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^0.1.0"
},
{
"name": "ansis",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^3.0.0"
},
{
"name": "liquidjs",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^10.24.0"
},
{
"name": "playwright-core",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.58.2"
},
{
"name": "zod",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.3.6"
},
{
"name": "@grammyjs/ratelimiter",
"manifest": "plugins/calcom-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^1.2.1"
},
{
"name": "grammy",
"manifest": "plugins/calcom-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^1.39.3"
},
{
"name": "@anthropic-ai/claude-agent-sdk",
"manifest": "plugins/gmail-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^0.2.92"
},
{
"name": "@grammyjs/ratelimiter",
"manifest": "plugins/gmail-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^1.2.1"
},
{
"name": "grammy",
"manifest": "plugins/gmail-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^1.39.3"
},
{
"name": "zod",
"manifest": "plugins/gmail-commander/package.json",
"ecosystem": "npm",
"version_constraint": "^4.3.6"
},
{
"name": "marked",
"manifest": "plugins/plugin-dev/package.json",
"ecosystem": "npm",
"version_constraint": "^15.0.0"
},
{
"name": "gray-matter",
"manifest": "plugins/plugin-dev/package.json",
"ecosystem": "npm",
"version_constraint": "^4.0.3"
},
{
"name": "ansis",
"manifest": "plugins/plugin-dev/package.json",
"ecosystem": "npm",
"version_constraint": "^3.5.0"
},
{
"name": "simple-git",
"manifest": "plugins/statusline-tools/package.json",
"ecosystem": "npm",
"version_constraint": "^3.27.0"
},
{
"name": "remark-parse",
"manifest": "plugins/statusline-tools/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "unified",
"manifest": "plugins/statusline-tools/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.5"
},
{
"name": "unist-util-visit",
"manifest": "plugins/statusline-tools/package.json",
"ecosystem": "npm",
"version_constraint": "^5.0.0"
}
],
"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": 10,
"open_issues": 49,
"closed_ratio": 0.38,
"closed_issues": 30,
"closed_unmerged_prs": 6
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "terrylica",
"commits": 2725,
"avatar_url": "https://avatars.githubusercontent.com/u/99227742?v=4"
},
{
"type": "User",
"login": "semantic-release-bot",
"commits": 993,
"avatar_url": "https://avatars.githubusercontent.com/u/32174276?v=4"
},
{
"type": "User",
"login": "nasimubd",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/156278474?v=4"
}
],
"contributors_sampled": 3,
"top_contributor_share": 0.732
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"has_docs_dir": true,
"linter_configs": [
"ruff.toml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"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": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 2 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": "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": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "75 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "a10f829bc81bbfc6c2f8ee4d5192b23c509f2372",
"ran_at": "2026-07-25T18:52:52Z",
"aggregate_score": 2.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-23T22:50:38Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-20T20:24:17Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 21,
"created_at": "2026-02-02T09:04:58Z",
"last_comment_at": "2026-02-05T01:55:21Z",
"last_comment_author": "terrylica"
},
{
"number": 22,
"created_at": "2026-02-08T22:34:36Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 25,
"created_at": "2026-02-20T10:27:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 28,
"created_at": "2026-02-28T09:47:50Z",
"last_comment_at": "2026-02-28T10:01:12Z",
"last_comment_author": "terrylica"
},
{
"number": 29,
"created_at": "2026-02-28T10:46:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 36,
"created_at": "2026-03-02T03:52:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 37,
"created_at": "2026-03-02T03:53:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 38,
"created_at": "2026-03-02T03:53:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 39,
"created_at": "2026-03-04T19:20:13Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 40,
"created_at": "2026-03-06T20:19:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 41,
"created_at": "2026-03-06T20:48:09Z",
"last_comment_at": "2026-03-06T21:40:27Z",
"last_comment_author": "terrylica"
},
{
"number": 42,
"created_at": "2026-03-06T20:49:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 43,
"created_at": "2026-03-06T20:49:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 44,
"created_at": "2026-03-06T20:50:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 45,
"created_at": "2026-03-06T20:51:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 46,
"created_at": "2026-03-06T20:52:03Z",
"last_comment_at": "2026-03-06T21:39:12Z",
"last_comment_author": "terrylica"
},
{
"number": 47,
"created_at": "2026-03-06T20:52:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 48,
"created_at": "2026-03-06T20:53:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 49,
"created_at": "2026-03-06T20:54:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 50,
"created_at": "2026-03-06T20:54:29Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/terrylica/cc-skills",
"host": "github.com",
"name": "cc-skills",
"owner": "terrylica"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"security": 25,
"vitality": 93,
"community": 43,
"governance": 37,
"engineering": 64
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 93,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"commits_last_year": 3723,
"human_commit_share": 1,
"days_since_last_push": 1,
"active_weeks_last_year": 34
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "34/52 weeks with commits",
"points": 23.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 34
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "3723 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 3723
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 2 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": 100,
"latest_release_tag": "v22.18.0",
"releases_from_tags": false,
"days_since_latest_release": 2,
"mean_days_between_releases": 0.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.4
}
}
],
"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": 1,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 1 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 1
}
}
],
"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": 43,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 36,
"inputs": {
"forks": 8,
"stars": 59,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "59 stars",
"points": 28.6,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 59
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "8 forks",
"points": 7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 8
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 37,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 3,
"top_contributor_share": 0.732
},
"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 73% of commits",
"points": 6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 73
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "3 contributors",
"points": 4.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 3
}
}
],
"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": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"merged_prs": 10,
"open_issues": 49,
"closed_issues": 30,
"issue_closed_ratio": 0.38,
"closed_unmerged_prs": 6
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "38% of issues closed",
"points": 17.8,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 38
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "10/16 decided PRs merged",
"points": 23.9,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 10,
"decided": 16
}
}
],
"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": 51,
"inputs": {
"followers": 16,
"owner_type": "User",
"is_verified": null,
"owner_login": "terrylica",
"public_repos": 251,
"account_age_days": 1628
},
"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": "16 followers of terrylica",
"points": 8.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 16,
"login": "terrylica"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "251 public repos, account ~4 yr old",
"points": 21.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 251
}
},
{
"code": "account_age_years",
"params": {
"years": 4
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 64,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"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": 50,
"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": "ruff.toml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"ai-tools",
"anthropic",
"automation",
"claude",
"claude-code",
"clickhouse",
"developer-tools",
"devops",
"llm",
"marketplace",
"plugins",
"productivity",
"semantic-release",
"skills",
"workflow",
"ai-agents",
"coding-assistant",
"mcp",
"open-source",
"prompt-engineering"
],
"has_wiki": true,
"homepage": null,
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "20 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 20
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "critical",
"name": "Security",
"value": 25,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"dangerous_workflow",
"packaging",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 25,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 2.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "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 workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 2 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": "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": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "75 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 73,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"CLAUDE.md",
"docs/CLAUDE.md",
"docs/design/CLAUDE.md",
"plugins/CLAUDE.md",
"plugins/agent-reach/CLAUDE.md",
"plugins/asciinema-tools/CLAUDE.md",
"plugins/calcom-commander/CLAUDE.md",
"plugins/claude-tts-companion/CLAUDE.md",
"plugins/cli-anything/CLAUDE.md",
"plugins/crucible/CLAUDE.md",
"plugins/devops-tools/CLAUDE.md",
"plugins/doc-tools/CLAUDE.md",
"plugins/dotfiles-tools/CLAUDE.md",
"plugins/floating-clock/CLAUDE.md",
"plugins/garch-volatility-toolkit/CLAUDE.md",
"plugins/gemini-deep-research/CLAUDE.md",
"plugins/gh-tools/CLAUDE.md",
"plugins/gh-tools/skills/gh-fine-grained-pat/CLAUDE.md",
"plugins/git-town-workflow/CLAUDE.md",
"plugins/gmail-commander/CLAUDE.md",
"plugins/graphify-tools/CLAUDE.md",
"plugins/html-showcase/CLAUDE.md",
"plugins/itp-hooks/CLAUDE.md",
"plugins/itp/CLAUDE.md",
"plugins/kokoro-tts/CLAUDE.md",
"plugins/link-tools/CLAUDE.md",
"plugins/macos-font-defaults/CLAUDE.md",
"plugins/macro-keyboard/CLAUDE.md",
"plugins/macro-keyboard/skills/configure-macro-keyboard/CLAUDE.md",
"plugins/macro-keyboard/skills/diagnose-hid-keycodes/CLAUDE.md",
"plugins/macro-keyboard/skills/emit-fn-key-on-macos/CLAUDE.md",
"plugins/media-tools/CLAUDE.md",
"plugins/minimax/CLAUDE.md",
"plugins/mise/CLAUDE.md",
"plugins/mql5/CLAUDE.md",
"plugins/notes-commander/CLAUDE.md",
"plugins/openwolf/CLAUDE.md",
"plugins/plugin-dev/CLAUDE.md",
"plugins/productivity-tools/CLAUDE.md",
"plugins/pushover-commander/CLAUDE.md",
"plugins/quality-tools/CLAUDE.md",
"plugins/quant-research/CLAUDE.md",
"plugins/rust-tools/CLAUDE.md",
"plugins/ssh-tunnel-companion/CLAUDE.md",
"plugins/statusline-tools/CLAUDE.md",
"plugins/tlg/CLAUDE.md",
"plugins/tts-tg-sync/CLAUDE.md",
"plugins/web-forge/CLAUDE.md",
"plugins/whatsapp-commander/CLAUDE.md",
"plugins/zai/CLAUDE.md"
],
"agent_instruction_max_bytes": 32251
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md, docs/CLAUDE.md, docs/design/CLAUDE.md, plugins/CLAUDE.md, plugins/agent-reach/CLAUDE.md, plugins/asciinema-tools/CLAUDE.md, plugins/calcom-commander/CLAUDE.md, plugins/claude-tts-companion/CLAUDE.md, plugins/cli-anything/CLAUDE.md, plugins/crucible/CLAUDE.md, plugins/devops-tools/CLAUDE.md, plugins/doc-tools/CLAUDE.md, plugins/dotfiles-tools/CLAUDE.md, plugins/floating-clock/CLAUDE.md, plugins/garch-volatility-toolkit/CLAUDE.md, plugins/gemini-deep-research/CLAUDE.md, plugins/gh-tools/CLAUDE.md, plugins/gh-tools/skills/gh-fine-grained-pat/CLAUDE.md, plugins/git-town-workflow/CLAUDE.md, plugins/gmail-commander/CLAUDE.md, plugins/graphify-tools/CLAUDE.md, plugins/html-showcase/CLAUDE.md, plugins/itp-hooks/CLAUDE.md, plugins/itp/CLAUDE.md, plugins/kokoro-tts/CLAUDE.md, plugins/link-tools/CLAUDE.md, plugins/macos-font-defaults/CLAUDE.md, plugins/macro-keyboard/CLAUDE.md, plugins/macro-keyboard/skills/configure-macro-keyboard/CLAUDE.md, plugins/macro-keyboard/skills/diagnose-hid-keycodes/CLAUDE.md, plugins/macro-keyboard/skills/emit-fn-key-on-macos/CLAUDE.md, plugins/media-tools/CLAUDE.md, plugins/minimax/CLAUDE.md, plugins/mise/CLAUDE.md, plugins/mql5/CLAUDE.md, plugins/notes-commander/CLAUDE.md, plugins/openwolf/CLAUDE.md, plugins/plugin-dev/CLAUDE.md, plugins/productivity-tools/CLAUDE.md, plugins/pushover-commander/CLAUDE.md, plugins/quality-tools/CLAUDE.md, plugins/quant-research/CLAUDE.md, plugins/rust-tools/CLAUDE.md, plugins/ssh-tunnel-companion/CLAUDE.md, plugins/statusline-tools/CLAUDE.md, plugins/tlg/CLAUDE.md, plugins/tts-tg-sync/CLAUDE.md, plugins/web-forge/CLAUDE.md, plugins/whatsapp-commander/CLAUDE.md, plugins/zai/CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md, docs/CLAUDE.md, docs/design/CLAUDE.md, plugins/CLAUDE.md, plugins/agent-reach/CLAUDE.md, plugins/asciinema-tools/CLAUDE.md, plugins/calcom-commander/CLAUDE.md, plugins/claude-tts-companion/CLAUDE.md, plugins/cli-anything/CLAUDE.md, plugins/crucible/CLAUDE.md, plugins/devops-tools/CLAUDE.md, plugins/doc-tools/CLAUDE.md, plugins/dotfiles-tools/CLAUDE.md, plugins/floating-clock/CLAUDE.md, plugins/garch-volatility-toolkit/CLAUDE.md, plugins/gemini-deep-research/CLAUDE.md, plugins/gh-tools/CLAUDE.md, plugins/gh-tools/skills/gh-fine-grained-pat/CLAUDE.md, plugins/git-town-workflow/CLAUDE.md, plugins/gmail-commander/CLAUDE.md, plugins/graphify-tools/CLAUDE.md, plugins/html-showcase/CLAUDE.md, plugins/itp-hooks/CLAUDE.md, plugins/itp/CLAUDE.md, plugins/kokoro-tts/CLAUDE.md, plugins/link-tools/CLAUDE.md, plugins/macos-font-defaults/CLAUDE.md, plugins/macro-keyboard/CLAUDE.md, plugins/macro-keyboard/skills/configure-macro-keyboard/CLAUDE.md, plugins/macro-keyboard/skills/diagnose-hid-keycodes/CLAUDE.md, plugins/macro-keyboard/skills/emit-fn-key-on-macos/CLAUDE.md, plugins/media-tools/CLAUDE.md, plugins/minimax/CLAUDE.md, plugins/mise/CLAUDE.md, plugins/mql5/CLAUDE.md, plugins/notes-commander/CLAUDE.md, plugins/openwolf/CLAUDE.md, plugins/plugin-dev/CLAUDE.md, plugins/productivity-tools/CLAUDE.md, plugins/pushover-commander/CLAUDE.md, plugins/quality-tools/CLAUDE.md, plugins/quant-research/CLAUDE.md, plugins/rust-tools/CLAUDE.md, plugins/ssh-tunnel-companion/CLAUDE.md, plugins/statusline-tools/CLAUDE.md, plugins/tlg/CLAUDE.md, plugins/tts-tg-sync/CLAUDE.md, plugins/web-forge/CLAUDE.md, plugins/whatsapp-commander/CLAUDE.md, plugins/zai/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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [
"plugins/claude-tts-companion/Makefile",
"plugins/floating-clock/Makefile",
"plugins/ssh-tunnel-companion/Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"plugins/calcom-commander/scripts/calcom-cli/tsconfig.json",
"plugins/calcom-commander/tsconfig.json",
"plugins/gmail-commander/scripts/gmail-cli/tsconfig.json",
"plugins/gmail-commander/tsconfig.json",
"plugins/plugin-dev/tsconfig.json",
"plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json",
"plugins/pushover-commander/skills/_lib/tsconfig.json",
"plugins/statusline-tools/tsconfig.json",
"plugins/tlg/scripts/tsconfig.json",
"tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "plugins/claude-tts-companion/Makefile, plugins/floating-clock/Makefile, plugins/ssh-tunnel-companion/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "plugins/claude-tts-companion/Makefile, plugins/floating-clock/Makefile, plugins/ssh-tunnel-companion/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "ruff.toml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ruff.toml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "plugins/calcom-commander/scripts/calcom-cli/tsconfig.json, plugins/calcom-commander/tsconfig.json, plugins/gmail-commander/scripts/gmail-cli/tsconfig.json, plugins/gmail-commander/tsconfig.json, plugins/plugin-dev/tsconfig.json, plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json, plugins/pushover-commander/skills/_lib/tsconfig.json, plugins/statusline-tools/tsconfig.json, plugins/tlg/scripts/tsconfig.json, tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "plugins/calcom-commander/scripts/calcom-cli/tsconfig.json, plugins/calcom-commander/tsconfig.json, plugins/gmail-commander/scripts/gmail-cli/tsconfig.json, plugins/gmail-commander/tsconfig.json, plugins/plugin-dev/tsconfig.json, plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json, plugins/pushover-commander/skills/_lib/tsconfig.json, plugins/statusline-tools/tsconfig.json, plugins/tlg/scripts/tsconfig.json, tsconfig.json"
}
}
],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"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": "good",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Shell",
"largest_source_bytes": 77462,
"source_files_sampled": 575,
"oversized_source_files": 2
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Shell with type-check config (plugins/calcom-commander/scripts/calcom-cli/tsconfig.json, plugins/calcom-commander/tsconfig.json, plugins/gmail-commander/scripts/gmail-cli/tsconfig.json, plugins/gmail-commander/tsconfig.json, plugins/plugin-dev/tsconfig.json, plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json, plugins/pushover-commander/skills/_lib/tsconfig.json, plugins/statusline-tools/tsconfig.json, plugins/tlg/scripts/tsconfig.json, tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "plugins/calcom-commander/scripts/calcom-cli/tsconfig.json, plugins/calcom-commander/tsconfig.json, plugins/gmail-commander/scripts/gmail-cli/tsconfig.json, plugins/gmail-commander/tsconfig.json, plugins/plugin-dev/tsconfig.json, plugins/productivity-tools/skills/gdrive-access/scripts/tsconfig.json, plugins/pushover-commander/skills/_lib/tsconfig.json, plugins/statusline-tools/tsconfig.json, plugins/tlg/scripts/tsconfig.json, tsconfig.json",
"language": "Shell"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "2/575 source files over 60KB",
"points": 54.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 575,
"oversized": 2
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-25T18:53:00.877634Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/terrylica/cc-skills.svg",
"full_name": "terrylica/cc-skills",
"license_state": "standard",
"license_spdx": "MIT"
}