reticle-designer

Design rifle-scope reticles and emit BallisticCalculator .reticle files with SVG previews.

43|30|Updated Nov 16, 2025
One-click install
npx skills add https://github.com/nikolaygekht/ballistic.calculator.app.avalonia --skill reticle-designer-nikolaygekht
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: reticle-designer
Source: https://github.com/nikolaygekht/ballistic.calculator.app.avalonia/tree/main/.claude/skills/reticle-designer
Command: npx skills add https://github.com/nikolaygekht/ballistic.calculator.app.avalonia --skill reticle-designer-nikolaygekht

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) and assets (resource) components.

What problem does it solve? Designing a rifle-scope reticle means translating a plain-language brief into precise angular geometry, and the BallisticCalculator .reticle (BXml) format fails silently on misspelled attributes, mis-cased booleans, and wrong colour attribute names, so hand-written files produce wrong drawings with no error. This Skill encodes the complete file specification, reticle design principles, and verified patterns, and ships a check/render tool that catches what the deserializer would silently drop. ## Core Features & Use Cases - Reticle generation from a brief: Convert descriptions like "0.2 mil hashes out to 5 mils" into complete .reticle files covering duplex, mil-dot, hash-ladder, christmas-tree, chevron, circle-dot, dense-grid, and rangefinding-stadia families. - Commercial reticle reproduction: Reproduce named reticles (Horus H58/H59, TReMoR, Mil-C, MOAR) from manufacturer technical data sheets, with correct mrad-vs-mil unit handling and radius-vs-diameter conversion. - Validation and preview: Run scripts/reticle.py check to detect silently-dropped attributes and BDC label collisions, and render to SVG plus an ASCII raster to verify symmetry, stroke-weight hierarchy, and clutter. - Use Case: A user asks for a christmas-tree holdover reticle for a .308 load; the Skill computes drop and windage holds from a trajectory, generates the ladder with a Python emitter, validates the file, and delivers the .reticle, an SVG preview, and a subtension table. ## Quick Start Ask the assistant to design a scope reticle from your description, for example: create a mil-hash reticle with 0.2 mrad graduations out to 10 mrad of holdover and render a preview.

Frequently Asked Questions about reticle-designer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a custom rifle scope reticle file?

Describe the reticle in plain language — unit system, hash spacing, holdover extent, and aiming point — and the Skill generates a .reticle BXml file, validates it with scripts/reticle.py check, and renders an SVG plus ASCII preview for review.

What is the difference between mil and mrad in a .reticle file?

In this library, mil means the NATO military mil (1/6400 circle), which is 1.86% smaller than a milliradian. Shooters saying "mil" almost always mean milliradian, so write mrad; over a 10-mil ladder the error is about 0.19 mrad.

Why does my .reticle file load but draw incorrectly?

The BXml deserializer validates nothing: misspelled attributes are skipped, fill="True" silently reads as false, and each element uses a different colour attribute name (line-color, color, text-color). Run scripts/reticle.py check to find every silent failure.

Can I reproduce a commercial reticle like the Horus H59?

Yes. The Skill covers reproducing named reticles from manufacturer technical data sheets, which carry exact line widths and dot diameters as dimensioned drawings. Remember spec sheets quote dot diameters while reticle-circle takes a radius, so halve those values.

How do BDC anchors work in a reticle file?

A <bdc> element draws nothing; it is an invisible anchor that ReticleDrawController labels with distances computed from a real trajectory at render time. The visible tick at each hold must be a separate reticle-line, and the trajectory step should be 25 yards or finer.

Why do my holdover marks appear above the crosshair?

Reticle Y is positive upward, so holdover marks below the aiming point need negative Y values — the opposite of screen coordinates. Windage also has the opposite sign to reticle X, so drift-compensated holds use x = -WindageAdjustment.