Skip to content
SlashClone

Seeded image crops

@slashclone/seeded-image-crops

Give every card, profile, and page header its own cover from just a few hero images: each item gets a stable crop (a hand-picked framing, nudged per item), the same every time it loads. One small file shared by every card, so a page of cards downloads the images once. Includes a checker that previews how evenly your items spread across the crops.

SkillContentv0.1.0 (latest)Tested
Activity
New: be the first to try it
  1. 1{
  2. 2 "name": "seeded-image-crops",
  3. 3 "owner": "slashclone",
  4. 4 "version": "0.1.0",
  5. 5 "type": "skill",
  6. 6 "description": "Give every card, profile, and page header its own cover from just a few hero images: each item gets a stable crop (a hand-picked framing, nudged per item), the same every time it loads. One small file shared by every card, so a page of cards downloads the images once. Includes a checker that previews how evenly your items spread across the crops.",
  7. 7 "category": "content",
  8. 8 "license": "MIT",
  9. 9 "compat": ["claude-code"],
  10. 10 "permissions": {
  11. 11 "shell": ["node scripts/check-crops.mjs"],
  12. 12 "files": { "read": ["**"], "write": ["**"] }
  13. 13 },
  14. 14 "tests": {
  15. 15 "cases": [
  16. 16 {
  17. 17 "name": "spreads 200 seeds across the example framings, the same every run",
  18. 18 "inputs": {},
  19. 19 "checks": [
  20. 20 {
  21. 21 "type": "command_exits_zero",
  22. 22 "command": "node scripts/check-crops.mjs --crops examples/crops.json --seeds 200 --out out/crop-report.json"
  23. 23 },
  24. 24 {
  25. 25 "type": "output_matches_schema",
  26. 26 "path": "out/crop-report.json",
  27. 27 "schema": {
  28. 28 "type": "object",
  29. 29 "required": ["framings", "distinct", "stable"],
  30. 30 "properties": {
  31. 31 "framings": { "const": 10 },
  32. 32 "stable": { "const": true },
  33. 33 "distinct": { "type": "integer", "minimum": 150 }
  34. 34 }
  35. 35 }
  36. 36 }
  37. 37 ]
  38. 38 }
  39. 39 ]
  40. 40 }