{"id":51751436,"url":"https://github.com/erikdarlingdata/claude-plugins","last_synced_at":"2026-07-19T01:13:43.893Z","repository":{"id":370647932,"uuid":"1295951337","full_name":"erikdarlingdata/claude-plugins","owner":"erikdarlingdata","description":"Claude Code plugins from Erik Darling Data","archived":false,"fork":false,"pushed_at":"2026-07-10T03:39:02.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-10T04:11:47.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erikdarlingdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-10T02:00:04.000Z","updated_at":"2026-07-10T03:39:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/erikdarlingdata/claude-plugins","commit_stats":null,"previous_names":["erikdarlingdata/claude-plugins"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/erikdarlingdata/claude-plugins","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikdarlingdata%2Fclaude-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikdarlingdata%2Fclaude-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikdarlingdata%2Fclaude-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikdarlingdata%2Fclaude-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erikdarlingdata","download_url":"https://codeload.github.com/erikdarlingdata/claude-plugins/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikdarlingdata%2Fclaude-plugins/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35636820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-18T02:00:07.223Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-19T01:13:43.266Z","updated_at":"2026-07-19T01:13:43.883Z","avatar_url":"https://github.com/erikdarlingdata.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Darling Data — Claude Code plugins\n\nA [Claude Code plugin marketplace](https://code.claude.com/docs/en/plugin-marketplaces)\nfrom [Darling Data](https://erikdarling.com).\n\n```\n/plugin marketplace add erikdarlingdata/claude-plugins\n```\n\n## Plugins\n\n### `sqlserver-query-plans`\n\nTeaches Claude to read a SQL Server execution plan and say what is actually slow,\nand why.\n\n```\n/plugin install sqlserver-query-plans@erikdarling\n```\n\nPoint Claude at a `.sqlplan` file and ask. The skill is model-invoked — you do not\nneed to call it explicitly.\n\nThe hard part of plan analysis is not spotting operators. It is knowing which\nnumbers mean what they appear to mean. This plugin is built mostly out of the\nconclusions that sound authoritative and are wrong:\n\n- **Cost percentages are estimates in every plan**, including actual plans.\n  Nothing recomputes them after execution. The 97%-cost operator is routinely not\n  the slow one, and an operator shown at 0% can consume the entire runtime.\n- **Row-mode operator times are cumulative.** Ranking operators by raw\n  `ActualElapsedms` ranks them by depth and always crowns the root node. Batch\n  mode reports standalone times. Exchange operators report times that are close\n  to meaningless.\n- **`EstimateRows` is per-execution; `ActualRows` is a total.** Without dividing\n  by `ActualExecutions`, the inner side of every nested loop looks\n  catastrophically underestimated when it may have estimated perfectly.\n- **Missing-index requests are hints, not DDL.** Equality columns come out in\n  arbitrary order, existing indexes are ignored, and the `Impact` figure is a\n  percentage of an estimated cost.\n- **A scan is not a defect and a seek is not a virtue.** Judge by rows touched\n  and time spent.\n\nIt also ships `scripts/extract.py`, which flattens a `.sqlplan` into a compact\ndigest. This is not a convenience:\n\n- `.sqlplan` files are **UTF-16**, so `grep` silently matches nothing and reports\n  no error. A negative result from `grep` on a plan file is worthless.\n- Some plans are UTF-8 bytes that still declare `encoding=\"utf-16\"`, because they\n  were opened and re-saved. Strict XML parsers reject them.\n- A trivial two-table join is 120 KB. Real plans run to megabytes. Reading one\n  into context wastes the context and still misses things.\n\nThe extractor handles the encoding, computes correct self-time attribution\n(subtracting children in row mode, within a thread rather than across threads in\nparallel plans, and not at all in batch mode), normalizes cardinality per\nexecution, and recognizes the optimizer's default-guess selectivity fingerprints.\n`--node N` drills into a single operator; `--sql` recovers full statement text.\n\nRequires Python 3 (standard library only). Without it, the skill degrades to a\ndocumented `grep`-based fallback and says plainly what it cannot determine.\n\n## GitHub Copilot CLI\n\nThis plugin also works in [GitHub Copilot CLI](https://docs.github.com/copilot/how-tos/copilot-cli/),\nwhich reads the same `SKILL.md` and `plugin.json` format.\n\n```\ncopilot plugin marketplace add erikdarlingdata/claude-plugins\ncopilot plugin install sqlserver-query-plans@erikdarling\n```\n\nOr add just the skill, without the marketplace:\n\n```\n/skills add ./plugins/sqlserver-query-plans/skills/query-plan-analysis\n```\n\nAs in Claude Code, the skill is model-invoked: point Copilot at a `.sqlplan` and ask.\n\n## About\n\nBuilt by [Erik Darling](https://erikdarling.com) at Darling Data. SQL Server\nconsulting, training, and free tools: **https://erikdarling.com**\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikdarlingdata%2Fclaude-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferikdarlingdata%2Fclaude-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikdarlingdata%2Fclaude-plugins/lists"}