Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jimmc414/claude-code-plugin-marketplace --skill find-convex-hullgit clone --depth 1 https://github.com/jimmc414/claude-code-plugin-marketplaceWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jimmc414/claude-code-plugin-marketplace/find-convex-hull)<a href="https://agentmods.dev/skills/jimmc414/claude-code-plugin-marketplace/find-convex-hull"><img src="https://agentmods.dev/badge/skills/jimmc414/claude-code-plugin-marketplace/find-convex-hull/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jimmc414/claude-code-plugin-marketplace/find-convex-hull"><img src="https://agentmods.dev/badge/skills/jimmc414/claude-code-plugin-marketplace/find-convex-hull.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00031 | $0.00842 |
| Opus 5 | $0.00015 | $0.00421 |
| Sonnet 5 | $0.00006 | $0.00168 |
| Haiku 4.5 | $0.00003 | $0.00084 |
Grade A, and why
find-convex-hull scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 104 lines — stays where its author put it; the contents beside it link to each section on GitHub.
find-convex-hull
When to Use
- Finding convex hull of point set
- Determining if point is inside polygon
- Computational geometry problems
- Collision detection bounds
- Geographic/map computations
When NOT to Use
- When hull is given (just use it)
- Very few points (< 5, just check manually)
- When you need concave hull
The Pattern
Monotone Chain Algorithm: Sort points, build upper and lower hulls separately using stack.
def convex_hull(points):
"""Find convex hull using monotone chain algorithm. O(n log n)."""
points = sorted(set(points)) # Sort by x, then y
if len(points) <= 3:
return points
# Build upper hull
upper = []
for p in points:
while len(upper) >= 2 and turn(upper[-2], upper[-1], p) != 'left':
upper.pop()
upper.append(p)
# Build lower hull
lower = []
for p in reversed(points):
while len(lower) >= 2 and turn(lower[-2], lower[-1], p) != 'left':
lower.pop()
lower.append(p)
return upper[:-1] + lower[:-1] # Remove duplicate endpoints
def turn(A, B, C):
"""Determine turn direction A -> B -> C using cross product."""
cross = (B[0] - A[0]) * (C[1] - B[1]) - (B[1] - A[1]) * (C[0] - B[0])
if cross > 0:
return 'left'
elif cross < 0:
return 'right'
else:
return 'straight'
Example (from pytudes Convex Hull.ipynb)
from collections import namedtuple
Point = namedtuple('Point', 'x y')
def turn(A, B, C):
"""Cross product determines turn direction."""
diff = (B.x - A.x) * (C.y - B.y) - (B.y - A.y) * (C.x - B.x)
return 'right' if diff < 0 else 'left' if diff > 0 else 'straight'
def half_hull(sorted_points):
"""Build one half of the hull."""
hull = []
for C in sorted_points:
# Pop points that don't make left turn
while len(hull) >= 2 and turn(hull[-2], hull[-1], C) != 'left':
hull.pop()
hull.append(C)
return hull
def convex_hull(points):
"""Complete convex hull from two half-hulls."""
if len(points) <= 3:
return list(points)
sorted_pts = sorted(points)
upper = half_hull(sorted_pts)
lower = half_hull(reversed(sorted_pts))
return upper + lower[1:-1] # Avoid duplicate endpoints
# Usage
points = [Point(0, 0), Point(1, 1), Point(2, 0), Point(1, 2), Point(0.5, 0.5)]
hull = convex_hull(points)
# Returns: [Point(0, 0), Point(2, 0), Point(1, 2)]
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 104 lines · 31 tokens per session scan A d3c4251f20a6
find-convex-hull is a skill published in the GitHub repository jimmc414/claude-code-plugin-marketplace (4 stars, last pushed today), licensed MIT. It adds 31 tokens to every session and 842 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
audit-progressive-disclosure
Read-only progressive-disclosure audit for agent-facing instruction markdown. Grades every target against a three-tier load-cost model (always-loaded / invocation-loaded / on-demand) and classifies seven finding shapes in two lanes: split opportunities (oversize vs tier-calibrated Anthropic-prescribed caps…
quiz-me
Post-work comprehension check: after a change is complete, generate a self-contained HTML report of what was done (context, intuition, decisions) with a quiz at the bottom for the user to answer. Verifying the HUMAN absorbed the work, not the artifact. Non-gating by default; the quizpolicy userConfig tunes offer…
shape
Shape the assistant's output for a reader with ADHD, and anyone who wants action-first, low-friction responses. Lead with the concrete next action, number multi-step work, restate state across turns, cap and rank lists, give concrete time estimates, make wins visible, and cut preamble, recap, and closers. Use when…
generate
Build a source-backed AI industry briefing from official vendor publications, configured RSS feeds, GitHub releases, reputable secondary reporting, and user-supplied URLs. Use when: 'ai briefing', 'ai news', 'what's new in AI', 'catch me up on AI', 'prep for AI meeting', 'AI roundup', or 'generate AI slides'.
audit-comment-residue
Classify code comments for four residue shapes. History narration ("used to… now…"), plan/session references ("Task 2 replaces the old…", "in this PR"), conversational antecedents ("per your request", "as you asked"), and ticket/PR/branch back-references a future reader will never see. Emitting Tier 1 (remove) and…
eli5
Dead-simple VISUAL explainer. Produces a visual HTML explainer that assumes zero prior knowledge: one idea per diagram, minimal text. Works on a codebase object (a module, a tradeoff, an incident) or a general concept, and grounds in the real artifact before drawing anything. Use when: 'ELI5', 'explain like I'm five'…