Compare commits

...

93 Commits

Author SHA1 Message Date
Bryan Thompson
ca884a3085 Merge branch 'main' into add-azure-sql-developer 2026-07-21 13:26:58 -05:00
Bryan Thompson
552fbcd37e Add mlflow plugin (#4346) 2026-07-21 11:19:39 -07:00
github-actions[bot]
fa24b84855 bump(auth0): de929462 → d1b19854 (#4329)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:16:28 -05:00
github-actions[bot]
3a24a3204d bump(confidence): c96d060b → a6e3760e (#4333)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:16:04 -05:00
github-actions[bot]
744fb286c6 bump(spotify-ads-api): 6f0b741c → 9407475a (#4340)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:15:27 -05:00
github-actions[bot]
6e42152956 bump(chrome-devtools-mcp): 348975d8 → b4546ef8 (#4332)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:15:21 -05:00
github-actions[bot]
bcedb45269 bump(ui5-typescript-conversion): d1e3a43f → 6b2d7f95 (#4343)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:15:13 -05:00
github-actions[bot]
fc3a0dc635 bump(deepeval): d1aa7c90 → c6293c12 (#4334)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:15:09 -05:00
github-actions[bot]
c823e1fc24 bump(carta-investors): f2c2cbb1 → 80da56af (#4331)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:14:45 -05:00
github-actions[bot]
bc1049c6c8 bump(ui5-modernization): d1e3a43f → 6b2d7f95 (#4342)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:14:17 -05:00
github-actions[bot]
ee11fbeea9 bump(hyperframes): 835fa899 → 696cbdbb (#4335)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:14:08 -05:00
github-actions[bot]
2a8836d310 bump(jfrog): 3ba72323 → 11177f66 (#4336)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:13:39 -05:00
github-actions[bot]
97f6beffed bump(looker): e05aac7d → 8ca746f8 (#4337)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:13:10 -05:00
github-actions[bot]
70f6b1a8ab bump(nightvision): 97c72cbc → 928d334e (#4338)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:12:41 -05:00
github-actions[bot]
494ec7c032 bump(railway): 2405547f → 191601b4 (#4339)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:12:11 -05:00
github-actions[bot]
4261908617 bump(ui5): c61e0b7f → 6b2d7f95 (#4341)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:11:38 -05:00
github-actions[bot]
aafd0190d1 bump(wix): 3e13495a → bef043f0 (#4344)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:11:06 -05:00
github-actions[bot]
35dad4f25f bump(zscaler): 23912913 → 47fe8745 (#4345)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 13:10:33 -05:00
github-actions[bot]
5808930e7e bump(sap-fiori-mcp-server): c288dadb → 98cd40f9 (#4323)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:30:26 -05:00
github-actions[bot]
56467552d4 bump(chrome-devtools-mcp): dcbaf495 → 348975d8 (#4316)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:29:56 -05:00
github-actions[bot]
ac8d849bd7 bump(sap-mdk-server): 006c41c8 → 1a42cfc3 (#4324)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:29:33 -05:00
github-actions[bot]
fa62fc3640 bump(aws-core): eb968520 → 493b4532 (#4313)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:29:08 -05:00
github-actions[bot]
7d5b592a49 bump(pydantic-ai): ec86ff6b → 97f67e13 (#4321)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:28:42 -05:00
github-actions[bot]
84d8a4c765 bump(sagemaker-ai): c65ee436 → 153b28e3 (#4322)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:28:15 -05:00
github-actions[bot]
a03f1f5191 bump(buildkite): 369d93eb → e854e111 (#4315)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:27:48 -05:00
github-actions[bot]
e5e1497f24 bump(deepeval): 6bb1881c → d1aa7c90 (#4317)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:27:22 -05:00
github-actions[bot]
8d29bdc838 bump(hyperframes): 911b332b → 835fa899 (#4319)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:26:51 -05:00
github-actions[bot]
730bea9a65 bump(jfrog): 427d2e68 → 3ba72323 (#4320)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:26:10 -05:00
github-actions[bot]
608e07e6d5 bump(wix): 5d7b1e90 → 3e13495a (#4326)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:25:37 -05:00
github-actions[bot]
defad4c4b9 bump(stripe): c29cd23c → a3267712 (#4325)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 12:24:09 -05:00
Bryan Thompson
a87b860f50 Merge branch 'main' into add-azure-sql-developer 2026-07-20 21:42:01 -05:00
github-actions[bot]
9ddfad2e99 bump(astronomer-data-agents): 5432198c → 87d780cd (#4296)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:12:20 -05:00
github-actions[bot]
69fd5a1a38 bump(grafana-cloud-mcp): a5c72f2d → 12be5634 (#4302)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:11:57 -05:00
github-actions[bot]
3b00b44438 bump(spotify-ads-api): aedf7ed8 → 6f0b741c (#4305)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:11:34 -05:00
github-actions[bot]
ca3a8550d3 bump(amd-skills): 7ef8dd99 → 22898093 (#4293)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:11:11 -05:00
github-actions[bot]
c484581437 bump(carta-investors): a007723c → f2c2cbb1 (#4297)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:10:46 -05:00
github-actions[bot]
c9b190d015 bump(data-engineering): 5432198c → 87d780cd (#4300)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:10:21 -05:00
github-actions[bot]
ab17f573eb bump(coderabbit): 2fd091d9 → c61c4908 (#4298)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:09:57 -05:00
github-actions[bot]
10b20b78dc bump(data): 5432198c → 87d780cd (#4299)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:09:32 -05:00
github-actions[bot]
0ad2369b5d bump(hyperframes): ff3627d5 → 911b332b (#4303)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:09:05 -05:00
github-actions[bot]
75cf64b482 bump(semgrep): 63fac121 → 7ae38e4b (#4304)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:08:38 -05:00
github-actions[bot]
e387ab4a52 bump(langfuse): b6253b2c → abe69fac (#4306)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:08:11 -05:00
github-actions[bot]
ce6b489327 bump(deepeval): ae2cb499 → 6bb1881c (#4301)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:07:44 -05:00
github-actions[bot]
d01a59d362 bump(apollo): 1fa5c26b → 2adde980 (#4294)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 19:07:18 -05:00
Morgan Lunt
b822a2974d receipts: show a sample receipt in the README (#4295)
You can't tell what this produces from a description, and the obvious
way to show it — screenshot a real run — would put someone's actual repo
names in a public README.

So the sample is generated: assets/make-sample.mjs builds a throwaway
HOME of invented repos, invented files and invented sessions, and the
real miner runs against that. The picture is what the tool genuinely
produces, from data that never existed. The generator ships next to the
asset so the next person can regenerate rather than edit a screenshot.

Also widen validate's path filter. It's a required check, so a PR that
only touches a plugin's README or assets matched no pattern, never
reported, and could not be merged — the same trap the workflow-file and
policy-file entries above already work around. Adding the plugin doc
paths lets this PR (and the next one) clear the gate on its own.

No-Verification-Needed: docs asset, dev-only generator, and CI trigger paths — no plugin runtime surface
2026-07-20 19:05:45 -05:00
Morgan Lunt
a41296f255 Merge pull request #4222 from anthropics/morganl/receipts-readme
receipts: trim the README to what a user needs
2026-07-20 15:31:24 -07:00
Bryan Thompson
e083d46028 Add azure-sql-developer plugin 2026-07-20 17:09:19 -05:00
Bryan Thompson
f186518811 Add newrelic plugin (#4282) 2026-07-20 19:59:42 +01:00
github-actions[bot]
4b7532dbc9 bump(save-to-spotify): ce79a3d3 → 9d05c8cd (#4277)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:18:56 -05:00
github-actions[bot]
848ffe2cbb bump(aws-core): 36f16570 → eb968520 (#4264)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:18:33 -05:00
github-actions[bot]
becfe3b868 bump(carta-cap-table): 4f46ba01 → a007723c (#4266)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:17:53 -05:00
github-actions[bot]
9fa561d837 bump(chrome-devtools-mcp): 76fd2424 → dcbaf495 (#4268)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:17:29 -05:00
github-actions[bot]
175422e008 bump(carta-investors): 70c61a2a → a007723c (#4267)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:17:21 -05:00
github-actions[bot]
94769e57d1 bump(qdrant-skills): e043b731 → 240854b3 (#4275)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:16:56 -05:00
github-actions[bot]
7d35f339c9 bump(auth0): 0d426960 → de929462 (#4263)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:16:50 -05:00
github-actions[bot]
1851db5068 bump(base44): 876f080f → 40e54802 (#4265)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:16:22 -05:00
github-actions[bot]
7891a3ba86 bump(apollo): d0676ea9 → 1fa5c26b (#4262)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:15:56 -05:00
github-actions[bot]
9bd3628cc7 bump(sap-mdk-server): 65c088d1 → 006c41c8 (#4276)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:15:31 -05:00
github-actions[bot]
1797be51ff bump(codspeed): 5c27231b → 26fb4b59 (#4269)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:15:20 -05:00
github-actions[bot]
fc75f136e0 bump(dash0): 8a0a4199 → d7d95883 (#4270)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:15:06 -05:00
github-actions[bot]
bc80cd2ccd bump(deepeval): 58c9ef78 → ae2cb499 (#4271)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:14:51 -05:00
github-actions[bot]
9ec91f6bc2 bump(hunter): d2bab5bc → 2a89a5ec (#4272)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:14:21 -05:00
github-actions[bot]
761612fc6c bump(hyperframes): 735128a6 → ff3627d5 (#4273)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:13:51 -05:00
github-actions[bot]
938e717aef bump(posthog): 936b2d2c → 4bdfca8c (#4274)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:13:19 -05:00
github-actions[bot]
bce25c6da8 bump(supabase): 3b318450 → 5d742326 (#4278)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:12:48 -05:00
github-actions[bot]
53e0adc8e1 bump(wix): b9934f83 → 5d7b1e90 (#4279)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:12:14 -05:00
github-actions[bot]
d6e80cbcc3 bump(langfuse): 21033b44 → b6253b2c (#4280)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 13:11:42 -05:00
github-actions[bot]
00326e91c4 bump(sap-mdk-server): 20f6b571 → 65c088d1 (#4250)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:07:22 -05:00
github-actions[bot]
fa154ee3ca bump(carta-crm): 4f46ba01 → 62e9f9a0 (#4248)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:06:58 -05:00
github-actions[bot]
b16592925a bump(pydantic-ai): fb1b3a8e → ec86ff6b (#4256)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:06:34 -05:00
github-actions[bot]
2ce4ac4da0 bump(qdrant-skills): d1af526e → e043b731 (#4257)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:06:10 -05:00
github-actions[bot]
8822a30ef1 bump(base44): 58a183b6 → 876f080f (#4247)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:05:44 -05:00
github-actions[bot]
8bec5c3d75 bump(hyperframes): 458df4c4 → 735128a6 (#4249)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:05:18 -05:00
github-actions[bot]
abb5b05d01 bump(buildkite): 48619b1b → 369d93eb (#4253)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:04:50 -05:00
github-actions[bot]
6eacc17922 bump(clickhouse): 0b64ebd8 → 4c60200b (#4254)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:04:22 -05:00
github-actions[bot]
ad6a60bb24 bump(expo): 8d72763f → 8bd359f8 (#4255)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:03:55 -05:00
github-actions[bot]
2a1c85dfaf bump(wix): 0e8455f3 → b9934f83 (#4258)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:03:27 -05:00
github-actions[bot]
b0b9f02b05 bump(wix): f3d3b6a0 → 0e8455f3 (#4246)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-19 13:14:06 -05:00
github-actions[bot]
06a4dfeffb bump(hyperframes): d7933aa5 → 458df4c4 (#4242)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-19 08:42:35 -05:00
github-actions[bot]
5317fa6ef4 bump(wix): 9ad4cec5 → f3d3b6a0 (#4243)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-19 08:21:07 -05:00
github-actions[bot]
e09c3b1e5f bump(hyperframes): 177681af → d7933aa5 (#4240)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 19:03:09 -05:00
github-actions[bot]
c2f2a4ba67 bump(wix): 9c436cd5 → 9ad4cec5 (#4241)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 19:02:31 -05:00
github-actions[bot]
dbb2ba52ce bump(atomic-agents): 7fb0741f → b15ca449 (#4230)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 13:05:15 -05:00
github-actions[bot]
9dac50f8db bump(aws-core): 77dc9d04 → 36f16570 (#4231)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 13:04:53 -05:00
github-actions[bot]
9c417db660 bump(hyperframes): 7f761709 → 177681af (#4232)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 13:04:30 -05:00
github-actions[bot]
95b9883275 bump(rill): 6dffeeee → 6e5df006 (#4233)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 13:04:07 -05:00
github-actions[bot]
fd482c52fc bump(wix): e08711cc → 9c436cd5 (#4234)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 13:03:44 -05:00
github-actions[bot]
46cf017f6c bump(hyperframes): 4a2c9eee → 7f761709 (#4227)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 09:24:17 -05:00
github-actions[bot]
5e6155c2d1 bump(stripe): 61df6113 → c29cd23c (#4228)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-18 08:24:12 -05:00
github-actions[bot]
f9cb226d81 bump(databases-on-aws): efe040ab → d2822e94 (#4225)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 19:04:26 -05:00
github-actions[bot]
a205d23e24 bump(amd-skills): c62c0e58 → 7ef8dd99 (#4223)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 19:04:03 -05:00
github-actions[bot]
c60005bcab bump(carta-investors): 861f35ef → 70c61a2a (#4224)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 19:03:39 -05:00
github-actions[bot]
dbc82fa424 bump(hyperframes): 2577aaff → 4a2c9eee (#4226)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 19:03:14 -05:00
5 changed files with 287 additions and 47 deletions

View File

@@ -173,7 +173,7 @@
"url": "https://github.com/amd/skills.git",
"path": "skills",
"ref": "main",
"sha": "c62c0e58c3ece41593b98222f9f1c1cb7b7b31bb"
"sha": "228980933abd97a8aa4a2656c8ea3ae9e8b590c7"
},
"strict": false,
"skills": [
@@ -207,7 +207,7 @@
"source": {
"source": "url",
"url": "https://github.com/apolloio/apollo-mcp-plugin.git",
"sha": "d0676ea9bba52b0f97d810dade775de059ccd2bd"
"sha": "2adde980e45f421b7e9383d92870455627936bce"
},
"homepage": "https://www.apollo.io/"
},
@@ -253,7 +253,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "5432198caa8ef9ec33218124bcd44016db2d31bf"
"sha": "87d780cd5dc85a25c7ceb1f1720031fa4e48f781"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -286,7 +286,7 @@
"source": "url",
"url": "https://github.com/BrainBlend-AI/atomic-agents.git",
"path": "claude-plugin/atomic-agents",
"sha": "7fb0741f52ae7312b6e00bf1ad2c80aab4a2709e"
"sha": "b15ca449a81278b1c92666bdf9a2e57a817dcacd"
},
"homepage": "https://github.com/BrainBlend-AI/atomic-agents",
"tags": [
@@ -306,7 +306,7 @@
"url": "https://github.com/auth0/agent-skills.git",
"path": "plugins/auth0",
"ref": "main",
"sha": "0d426960256fe7e54e05495fab64208e1924f23b"
"sha": "d1b19854e60c6dfde048df91e4d97e536dba2491"
},
"homepage": "https://auth0.com"
},
@@ -367,7 +367,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-core",
"ref": "main",
"sha": "77dc9d04f7ca56c14514eabcf8773644681f378a"
"sha": "493b45323dd3163fb561792b9e091de3d4966709"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -470,6 +470,20 @@
"category": "database",
"homepage": "https://github.com/AzureCosmosDB/cosmosdb-claude-code-plugin"
},
{
"name": "azure-sql-developer",
"description": "Agent skills for Azure SQL Developer, the Azure SQL Database engine running locally in a container. Teaches your agent to run the engine, connect, migrate, scaffold, build RAG, wire CI, and go local-to-cloud, using the real Private Preview image instead of the SQL Server image.",
"author": {
"name": "Microsoft"
},
"category": "database",
"source": {
"source": "url",
"url": "https://github.com/microsoft/azure-sql-database-container.git",
"sha": "c64639ce9d03731180560ccca214695892a72fe4"
},
"homepage": "https://github.com/microsoft/azure-sql-database-container"
},
{
"name": "base44",
"description": "Build and deploy Base44 full-stack apps with CLI project management and JavaScript/TypeScript SDK development skills",
@@ -477,7 +491,7 @@
"source": {
"source": "url",
"url": "https://github.com/base44/skills.git",
"sha": "58a183b6e912fe8ae2827c603d485a37b7d00e1b"
"sha": "40e548021670ed409d3bae15601726cf652d846f"
},
"homepage": "https://docs.base44.com"
},
@@ -565,7 +579,7 @@
"source": {
"source": "url",
"url": "https://github.com/buildkite/skills.git",
"sha": "48619b1b5187209d74b333a215d63a2c7088f614"
"sha": "e854e111766e9494d742fe6836d5b6ecefd10b68"
},
"homepage": "https://buildkite.com"
},
@@ -597,7 +611,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-cap-table",
"ref": "main",
"sha": "4f46ba0181f4d07b45b7fd8e51208c9699afd566"
"sha": "a007723c7149acab9f9357eaa74b98635bb63934"
},
"homepage": "https://carta.com"
},
@@ -613,7 +627,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-crm",
"ref": "main",
"sha": "4f46ba0181f4d07b45b7fd8e51208c9699afd566"
"sha": "62e9f9a00ba06ab54f9f8896fb8becdbfd6dd46a"
},
"homepage": "https://carta.com"
},
@@ -629,7 +643,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-investors",
"ref": "main",
"sha": "861f35ef519efb48d2221c41faf830fd006729c3"
"sha": "80da56af79af8779f0dd1a08b8eaaf372fa48c9c"
},
"homepage": "https://carta.com"
},
@@ -656,7 +670,7 @@
"source": {
"source": "url",
"url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git",
"sha": "76fd2424984827802867672fcc8d0e0036f4a3af"
"sha": "b4546ef86b86e8733f88f075169d2124f436dd1e"
},
"homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp"
},
@@ -750,7 +764,7 @@
"source": {
"source": "url",
"url": "https://github.com/ClickHouse/clickhouse-claude-code-plugin.git",
"sha": "0b64ebd82240c14639c55c6f800bcad4626e3224"
"sha": "4c60200bf523342b68d5935b53f4dd0acb53e6b8"
},
"homepage": "https://github.com/ClickHouse/clickhouse-claude-code-plugin"
},
@@ -885,7 +899,7 @@
"source": {
"source": "url",
"url": "https://github.com/coderabbitai/skills.git",
"sha": "2fd091d9582deccf19929e21f934921d0e8f686e"
"sha": "c61c4908d36dda6fb08a343cc8b19c59fbb47de3"
},
"homepage": "https://github.com/coderabbitai/skills"
},
@@ -899,7 +913,7 @@
"source": {
"source": "url",
"url": "https://github.com/CodSpeedHQ/codspeed.git",
"sha": "5c27231b94437287b71ab505faba533d06e0cb24"
"sha": "26fb4b598f08faee386a8fa4212b8350c33dc013"
},
"homepage": "https://codspeed.io"
},
@@ -924,7 +938,7 @@
"source": {
"source": "url",
"url": "https://github.com/spotify/confidence-ai-plugins.git",
"sha": "c96d060b79e8b8068dab3ba4489be2343b7f2caf"
"sha": "a6e3760e5c274dd273e6e4677235422f98f01f4a"
},
"homepage": "https://confidence.spotify.com"
},
@@ -1027,7 +1041,7 @@
"source": {
"source": "url",
"url": "https://github.com/dash0hq/dash0-agent-plugin.git",
"sha": "8a0a41996dd5de9b7ef0f624347584d76c1fe48d"
"sha": "d7d95883b2e65290c6c08bf4404696afae4b26be"
},
"homepage": "https://dash0.com/"
},
@@ -1038,7 +1052,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "5432198caa8ef9ec33218124bcd44016db2d31bf"
"sha": "87d780cd5dc85a25c7ceb1f1720031fa4e48f781"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -1062,7 +1076,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "5432198caa8ef9ec33218124bcd44016db2d31bf"
"sha": "87d780cd5dc85a25c7ceb1f1720031fa4e48f781"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -1075,7 +1089,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/databases-on-aws",
"ref": "main",
"sha": "efe040ab66ed7eb4bccc0a94133181da5bc57567"
"sha": "d2822e9483fd03aed5556d4e03dfad6d60eac91b"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -1175,7 +1189,7 @@
"source": {
"source": "url",
"url": "https://github.com/confident-ai/deepeval.git",
"sha": "58c9ef78a4634ba119c7d2cc145f5cf9aeb24524"
"sha": "c6293c1201515293541d515a2da1b4de387e2c01"
},
"homepage": "https://github.com/confident-ai/deepeval"
},
@@ -1306,7 +1320,7 @@
"url": "https://github.com/expo/skills.git",
"path": "plugins/expo",
"ref": "main",
"sha": "8d72763f53c4fe11ed3ae0441b921bda821d2a74"
"sha": "8bd359f8a44d2446de12f1fe6e6316daf043056e"
},
"homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md"
},
@@ -1492,7 +1506,7 @@
"url": "https://github.com/grafana/ai-marketplace.git",
"path": "plugins/grafana-cloud-mcp",
"ref": "main",
"sha": "a5c72f2d74c640e9675eb0249526447968535015"
"sha": "12be5634a492f73c189d466c5449d09b853ad7a4"
},
"homepage": "https://grafana.com"
},
@@ -1582,7 +1596,7 @@
"source": {
"source": "url",
"url": "https://github.com/hunter-io/claude-plugin.git",
"sha": "d2bab5bc4879abf88e7e8fc11891375c217fecfc"
"sha": "2a89a5ec3821eb0a4c2eb3412729b154f2ac8ebb"
},
"homepage": "https://hunter.io"
},
@@ -1596,7 +1610,7 @@
"source": {
"source": "url",
"url": "https://github.com/heygen-com/hyperframes.git",
"sha": "2577aaffeb9703be3d9dd17c0c5fb3c45b6e32e7"
"sha": "696cbdbbd0e5c83faf72c767126d4a153110f130"
},
"homepage": "https://hyperframes.heygen.com"
},
@@ -1667,7 +1681,7 @@
"source": "github",
"repo": "jfrog/claude-plugin",
"commit": "259c8e718266c16e99b4f30ae9b1ed0f9f00d98d",
"sha": "427d2e68848b2d04df586bd6be4904a5934828fb"
"sha": "11177f6698405976ee0eecbbfb4857ed9657f19f"
},
"homepage": "https://jfrog.com"
},
@@ -1856,7 +1870,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/looker.git",
"sha": "e05aac7d0287e337ff13cfa3183f39675d67dd97"
"sha": "8ca746f8d6b0079d1f872c96bd3e0530bf4571d3"
},
"homepage": "https://github.com/gemini-cli-extensions/looker"
},
@@ -2069,6 +2083,20 @@
},
"homepage": "https://miro.com"
},
{
"name": "mlflow",
"description": "Skills for tracing, evaluating, and improving AI agents with MLflow. Supports the full agent improvement loop: instrument → trace → evaluate → iterate → validate.",
"author": {
"name": "MLflow Team"
},
"category": "monitoring",
"source": {
"source": "url",
"url": "https://github.com/mlflow/skills.git",
"sha": "c33bb3d303a2c6113bbaed6dbfe756e88e80f1df"
},
"homepage": "https://mlflow.org/"
},
{
"name": "monday-crm",
"description": "Run your monday CRM in plain language. Build a pipeline from scratch, start the day with a ranked deal briefing, spin up a forecast dashboard, audit board health, clean up messy data in bulk, and turn meeting notes into deal updates. Every skill writes back into monday as a real update, doc, or dashboard. Built on the official monday MCP connector.",
@@ -2146,13 +2174,27 @@
],
"homepage": "https://github.com/oracle/netsuite-suitecloud-sdk"
},
{
"name": "newrelic",
"description": "New Relic observability intelligence for Claude Code. Investigate APM performance, analyze cloud costs, debug Kubernetes, write NRQL queries, and respond to alerts — all from your terminal using New Relic telemetry data.",
"author": {
"name": "New Relic"
},
"category": "monitoring",
"source": {
"source": "url",
"url": "https://github.com/newrelic/claude-code-plugin.git",
"sha": "f8e5f8b62139072a22153ec92de1c0cc1af2f56a"
},
"homepage": "https://newrelic.com"
},
{
"name": "nightvision",
"description": "Skills for working with NightVision, a DAST and API Discovery platform that finds exploitable vulnerabilities in web applications and REST APIs",
"source": {
"source": "url",
"url": "https://github.com/nvsecurity/nightvision-skills.git",
"sha": "97c72cbcddf51ab2d8387b61c68d5d999fec645e"
"sha": "928d334e24354161a20f91de39ca60029338ba47"
},
"homepage": "https://github.com/nvsecurity/nightvision-skills"
},
@@ -2391,7 +2433,7 @@
"source": {
"source": "url",
"url": "https://github.com/PostHog/ai-plugin.git",
"sha": "936b2d2c38f78a36c563f68da8df4a5f2c0c008f"
"sha": "4bdfca8c6d58b8c9a303374f5f93485b8d9281fa"
},
"homepage": "https://posthog.com/docs/model-context-protocol"
},
@@ -2473,7 +2515,7 @@
"url": "https://github.com/pydantic/skills.git",
"path": "plugins/ai",
"ref": "main",
"sha": "fb1b3a8edc9fb5c4d289ab23f614f7f8d268be7e"
"sha": "97f67e13e353a9370b208c7b259dbe7c3768a80b"
},
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/ai"
},
@@ -2511,7 +2553,7 @@
"source": {
"source": "url",
"url": "https://github.com/qdrant/skills.git",
"sha": "d1af526ebe6db70b5cf957a62b7cfdfd85f362e1"
"sha": "240854b3068b6a9cd1ebf75ab008b5758071052b"
},
"homepage": "https://skills.qdrant.tech"
},
@@ -2563,7 +2605,7 @@
"url": "https://github.com/railwayapp/railway-skills.git",
"path": "plugins/railway",
"ref": "main",
"sha": "2405547f2044071c9d43bf6782edeb5d93e5bb4e"
"sha": "191601b4954527a87f4f004eaa355c8f30a855bf"
},
"homepage": "https://docs.railway.com/ai/claude-code-plugin"
},
@@ -2677,7 +2719,7 @@
"source": {
"source": "url",
"url": "https://github.com/rilldata/agent-skills.git",
"sha": "6dffeeee8617aceb796edb744e3c52a7c0ee88ac"
"sha": "6e5df00631875bc9f1119d5f08194596ad02e8f1"
},
"homepage": "https://docs.rilldata.com/developers/build/ai-configuration"
},
@@ -2762,7 +2804,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/sagemaker-ai",
"ref": "main",
"sha": "c65ee436b0db77bb75d380aef6fbdc9b114edf2a"
"sha": "153b28e3c10de3661b8744b80d72c3a96fcdb0ab"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -2810,7 +2852,7 @@
"url": "https://github.com/SAP/open-ux-tools.git",
"path": "packages/fiori-mcp-server",
"ref": "main",
"sha": "c288dadb279a9bb928f1e5246aac7a62efee1f6f"
"sha": "98cd40f91ba943df42382e5216af9f6f17a1c215"
},
"homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
},
@@ -2842,7 +2884,7 @@
"source": {
"source": "url",
"url": "https://github.com/SAP/mdk-mcp-server.git",
"sha": "20f6b5714e9cbd9919622e2bd1211ec956e48e59"
"sha": "1a42cfc38a2f12cb2be2a98c6604074446b1639e"
},
"homepage": "https://help.sap.com/docs/MDK"
},
@@ -2858,7 +2900,7 @@
"url": "https://github.com/spotify/save-to-spotify.git",
"path": "plugin",
"ref": "main",
"sha": "ce79a3d38b932b351530e204ec856419f9ba64b6"
"sha": "9d05c8cd8c8559552f84e27fe30f46b7693ce69a"
},
"homepage": "https://github.com/spotify/save-to-spotify"
},
@@ -2882,7 +2924,7 @@
"source": "git-subdir",
"url": "https://github.com/semgrep/mcp-marketplace.git",
"path": "plugin",
"sha": "63fac121296f3f102651de6beb7c15649c8b11d3"
"sha": "7ae38e4bec51877cec71fcacc5857d746fb8b468"
},
"homepage": "https://github.com/semgrep/mcp-marketplace.git"
},
@@ -3059,7 +3101,7 @@
"source": {
"source": "url",
"url": "https://github.com/spotify/ads-claude-plugin.git",
"sha": "aedf7ed87312891ef2e357c02b9c22fcca8907b4"
"sha": "9407475a5cd2a3986c48a58020fd47e23f9735e5"
},
"homepage": "https://github.com/spotify/ads-claude-plugin"
},
@@ -3072,7 +3114,7 @@
"url": "https://github.com/stripe/ai.git",
"path": "providers/claude/plugin",
"ref": "main",
"sha": "61df6113574127536db39738c4aa6fc15d3e2298"
"sha": "a3267712f2268975e4ecc5912634d900ae4cb8e6"
},
"homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin"
},
@@ -3095,7 +3137,7 @@
"source": {
"source": "url",
"url": "https://github.com/supabase-community/supabase-plugin.git",
"sha": "3b3184501844df3d2e0accac129fdcae73f4bf95"
"sha": "5d74232687a0a82184ecd4266ea07372edb43f4b"
},
"homepage": "https://github.com/supabase-community/supabase-plugin"
},
@@ -3247,7 +3289,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5",
"ref": "main",
"sha": "c61e0b7fc7e38168f1df4f705f54c57e59d44c98"
"sha": "6b2d7f95a739857082fa9cb50bfd5ce8b1163fdc"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -3265,7 +3307,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5-modernization",
"ref": "main",
"sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1"
"sha": "6b2d7f95a739857082fa9cb50bfd5ce8b1163fdc"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -3283,7 +3325,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5-typescript-conversion",
"ref": "main",
"sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1"
"sha": "6b2d7f95a739857082fa9cb50bfd5ce8b1163fdc"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -3405,7 +3447,7 @@
"source": {
"source": "url",
"url": "https://github.com/wix/skills.git",
"sha": "e08711cc8d56d23e229b1ec68a88cec6d2c08042"
"sha": "bef043f07972401e14fc4b129cf3895417f09352"
},
"homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills"
},
@@ -3512,7 +3554,7 @@
"source": {
"source": "url",
"url": "https://github.com/zscaler/zscaler-mcp-server.git",
"sha": "23912913f8588c650b104d3bd30c0c755d6962cd"
"sha": "47fe874551023bf8d138c24612aa4ea0f16aaa56"
},
"homepage": "https://github.com/zscaler/zscaler-mcp-server"
},
@@ -3526,7 +3568,7 @@
"source": {
"source": "url",
"url": "https://github.com/langfuse/skills.git",
"sha": "21033b441816025d52e9cff940aeb61680618ea3"
"sha": "abe69fac6b0e0df94605dc5ae162da4726d0fb78"
},
"homepage": "https://langfuse.com"
},

View File

@@ -19,6 +19,15 @@ on:
# pull_request and the required check would sit "Expected" forever (a dispatch
# check run isn't associated with the PR, so it can't satisfy the gate either).
- '.github/policy/**'
# And once more for a plugin's own docs: a PR that only edits a README or
# adds a screenshot matches nothing above, so the required check never
# reports and the PR can't be merged. Spelled out per level because `*`
# doesn't cross a `/` — plugins live at plugins/<name>/, so `*/README.md`
# would not match one.
- 'plugins/*/README.md'
- 'plugins/*/assets/**'
- 'external_plugins/*/README.md'
- 'external_plugins/*/assets/**'
push:
branches: [main]
paths:

View File

@@ -4,6 +4,12 @@ Generate a personal Claude Code impact report — "receipts" — from your own
session transcripts, for the conversation where someone asks what all this
Claude Code usage is actually buying.
<img src="assets/sample-receipt.png" width="400"
alt="A printed-receipt-styled report headed 'Claude Code — usage receipt, Morgan Lunt', covering 2026-06-21 to 2026-07-20, active on 28 of 30 days. It lists 40 sessions, 64 prompts, 14 files touched, 3,120 lines touched, 12 commits carrying that work and 7 PRs opened, headlined as 19 commits and PRs shipped. A by-project table gives 'Research and investigation (no project)' 53% of spend with no files touched, then acme-api 29%, acme-web 10%, billing-service 5%, infra-terraform 3%, and a plain ~/notes directory 1%. Footnotes explain which columns do not sum, and an Export CSV button sits above a barcode.">
*Sample output — the projects and numbers are invented. It's rendered from a
synthetic corpus, not from anyone's real usage.*
## Install
```

View File

@@ -0,0 +1,183 @@
// make-sample.mjs — regenerate assets/sample-receipt.png for the README.
//
// The README's sample must never contain anyone's real projects, so it isn't a
// screenshot of a real run. This builds a throwaway HOME with invented repos,
// invented files and invented sessions, then points the real miner at it — the
// picture is genuinely what the tool produces, from data that never existed.
//
// node assets/make-sample.mjs ~/receipts-sample
// HOME=~/receipts-sample/home node skills/receipts/scripts/mine-transcripts.mjs \
// --days 30 --html /tmp/sample.html
// # screenshot /tmp/sample.html at 620px wide, crop to the receipt
//
// Build it somewhere with no symlink above it — NOT /tmp, which on macOS is a
// symlink to /private/tmp. `git rev-parse --show-toplevel` resolves symlinks
// and these transcripts don't, so under /tmp every repo reports zero commits
// and the sample comes out silently wrong.
//
// Keep the invented names obviously fake (acme-*, example.com).
import fs from 'node:fs';
import path from 'node:path';
import { execFileSync } from 'node:child_process';
const ROOT = process.argv[2];
const HOME = path.join(ROOT, 'home');
fs.rmSync(ROOT, { recursive: true, force: true });
const NAME = 'Morgan Lunt';
const EMAIL = 'morgan@example.com';
const git = (cwd, ...a) => execFileSync('git', ['-C', cwd, ...a], { stdio: ['ignore', 'pipe', 'ignore'] });
// --- invented projects -------------------------------------------------------
const REPOS = {
'acme-api': ['src/routes/orders.ts', 'src/routes/refunds.ts', 'src/db/schema.sql', 'src/lib/auth.ts', 'tests/orders.test.ts'],
'acme-web': ['app/checkout/page.tsx', 'app/cart/state.ts', 'components/PriceTag.tsx'],
'billing-service': ['internal/invoice/render.go', 'internal/tax/rates.go'],
'infra-terraform': ['envs/prod/main.tf', 'modules/rds/variables.tf'],
};
const NOTES = ['migration-plan.md', 'oncall-runbook.md'];
fs.mkdirSync(path.join(HOME, 'notes'), { recursive: true });
fs.writeFileSync(path.join(HOME, '.gitconfig'), `[user]\n\tname = ${NAME}\n\temail = ${EMAIL}\n`);
for (const f of NOTES) fs.writeFileSync(path.join(HOME, 'notes', f), 'note\n'.repeat(40));
for (const [repo, files] of Object.entries(REPOS)) {
const dir = path.join(HOME, 'code', repo);
fs.mkdirSync(dir, { recursive: true });
git(dir, 'init', '-q', '-b', 'main');
git(dir, 'config', 'user.name', NAME);
git(dir, 'config', 'user.email', EMAIL);
git(dir, 'config', 'commit.gpgsign', 'false');
for (const f of files) {
fs.mkdirSync(path.dirname(path.join(dir, f)), { recursive: true });
fs.writeFileSync(path.join(dir, f), 'x\n'.repeat(60));
}
git(dir, 'add', '-A');
git(dir, 'commit', '-qm', 'initial');
}
// --- invented transcripts ----------------------------------------------------
const PROJ = path.join(HOME, '.claude', 'projects', 'sample');
fs.mkdirSync(PROJ, { recursive: true });
let uid = 0;
const U = () => `u${++uid}`;
const day = (back) => {
const d = new Date();
d.setDate(d.getDate() - back);
d.setHours(10 + (back % 6), 15, 0, 0);
return d.toISOString();
};
const usage = (out) => ({
input_tokens: 900,
output_tokens: out,
cache_creation: { ephemeral_5m_input_tokens: 4000, ephemeral_1h_input_tokens: 0 },
cache_read_input_tokens: 30000,
});
const asst = (sid, ts, cwd, blocks, out = 300) => ({
type: 'assistant', sessionId: sid, uuid: U(), requestId: `r${uid}`, timestamp: ts, cwd,
message: { usage: usage(out), content: blocks },
});
const user = (sid, ts, cwd, text) => ({
type: 'user', sessionId: sid, uuid: U(), promptId: `p${uid}`, timestamp: ts, cwd,
message: { content: text },
});
const tool = (name, input) => ({ type: 'tool_use', id: `t${++uid}`, name, input });
// One .jsonl per session, the way Claude Code actually lays them out.
const bySession = new Map();
const emit = (o) => {
const k = o.sessionId;
if (!bySession.has(k)) bySession.set(k, []);
bySession.get(k).push(JSON.stringify(o));
};
// Sessions that build things, spread across the invented repos.
const plan = [
{ repo: 'acme-api', sessions: 9, daysBack: [2, 3, 5, 6, 9, 12, 16, 20, 24], edits: 5, writes: 2 },
{ repo: 'acme-web', sessions: 5, daysBack: [4, 7, 11, 18, 22], edits: 3, writes: 1 },
{ repo: 'billing-service', sessions: 3, daysBack: [8, 15, 26], edits: 2, writes: 1 },
{ repo: 'infra-terraform', sessions: 2, daysBack: [13, 19], edits: 2, writes: 0 },
];
let sid = 0;
for (const p of plan) {
const dir = path.join(HOME, 'code', p.repo);
const files = REPOS[p.repo];
for (let i = 0; i < p.sessions; i++) {
const S = `s-${p.repo}-${++sid}`;
const ts = day(p.daysBack[i % p.daysBack.length]);
emit(user(S, ts, dir, 'add the thing'));
for (let e = 0; e < p.edits; e++) {
const f = path.join(dir, files[e % files.length]);
emit(asst(S, ts, dir, [tool('Read', { file_path: f })], 120));
emit(asst(S, ts, dir, [tool('Edit', { file_path: f, old_string: 'x\n'.repeat(9), new_string: 'y\n'.repeat(14) })], 400));
}
for (let w = 0; w < p.writes; w++) {
const f = path.join(dir, files[(w + 1) % files.length]);
emit(asst(S, ts, dir, [tool('Write', { file_path: f, content: 'z\n'.repeat(70) })], 700));
}
emit(asst(S, ts, dir, [tool('Bash', { command: 'npm test' })], 200));
if (i % 3 === 0) {
emit(user(S, ts, dir, 'open the PR'));
emit(asst(S, ts, dir, [tool('Bash', { command: 'gh pr create --fill' })], 150));
}
}
}
// Work in a plain directory — no repo.
for (let i = 0; i < 4; i++) {
const S = `s-notes-${i}`;
const ts = day([6, 10, 17, 23][i]);
const dir = path.join(HOME, 'notes');
emit(user(S, ts, dir, 'draft the migration plan'));
emit(asst(S, ts, dir, [tool('Write', { file_path: path.join(dir, NOTES[i % 2]), content: 'n\n'.repeat(55) })], 900));
}
// Research: no files touched, not in a repo. The row that surprises people.
for (let i = 0; i < 17; i++) {
const S = `s-res-${i}`;
const ts = day([1, 2, 3, 5, 7, 8, 9, 11, 12, 14, 16, 18, 20, 21, 25, 27, 28][i]);
emit(user(S, ts, HOME, 'what changed in the pricing API?'));
for (let k = 0; k < 6; k++) {
emit(asst(S, ts, HOME, [tool('WebFetch', { url: 'https://example.com/docs' })], 350));
emit(asst(S, ts, HOME, [tool('WebSearch', { query: 'pricing api changelog' })], 250));
}
emit(user(S, ts, HOME, 'and the rate limits?'));
emit(asst(S, ts, HOME, [tool('WebFetch', { url: 'https://example.com/limits' })], 400));
}
for (const [k, ls] of bySession) fs.writeFileSync(path.join(PROJ, `${k}.jsonl`), ls.join('\n') + '\n');
// --- commits carrying that work ---------------------------------------------
const COMMITS = {
'acme-api': [
['src/routes/orders.ts', 'orders: handle partial refunds', 2],
['src/lib/auth.ts', 'auth: rotate signing keys', 5],
['src/db/schema.sql', 'schema: add refund_reason', 9],
['tests/orders.test.ts', 'tests: cover partial refunds', 16],
],
'acme-web': [
['app/checkout/page.tsx', 'checkout: inline tax breakdown', 4],
['app/cart/state.ts', 'cart: fix stale totals', 11],
],
'billing-service': [['internal/invoice/render.go', 'invoice: round to minor units', 8]],
'infra-terraform': [['envs/prod/main.tf', 'prod: bump rds instance class', 13]],
};
// Date each commit to the day the session that produced it ran, so the
// "N of your M active days ended in a commit" line reflects a real rhythm
// rather than a fixture written all at once.
for (const [repo, cs] of Object.entries(COMMITS)) {
const dir = path.join(HOME, 'code', repo);
for (const [f, msg, back] of cs) {
fs.appendFileSync(path.join(dir, f), 'changed\n');
const when = day(back);
execFileSync('git', ['-C', dir, 'add', '-A'], { stdio: 'ignore' });
execFileSync('git', ['-C', dir, 'commit', '-qm', msg], {
stdio: 'ignore',
env: { ...process.env, GIT_AUTHOR_DATE: when, GIT_COMMITTER_DATE: when },
});
}
}
console.log(HOME);

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB