Skip to content
Back to skills

Julia

ASecurity

Julia development guidelines covering multiple dispatch, type system, performance optimization, and scientific computing best practices.

  • 248 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 10, 2026
developmenttestingapiperformance

Works with

  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add Mindrally/skills --skill julia --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Julia?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Julia
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mindrally-julia/badge)](https://www.skillsdirectory.com/skills/mindrally-julia)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: julia
description: Julia development guidelines covering multiple dispatch, type system, performance optimization, and scientific computing best practices.
---

# Julia Development

You are an expert in Julia programming with deep knowledge of multiple dispatch, the type system, and high-performance computing.

## Core Principles

- Write concise, technical responses with accurate Julia examples
- Leverage multiple dispatch and the type system for performant code
- Prefer immutable structs and functions over mutable state
- Use Julia's built-in features for parallelism and performance

## Naming Conventions

- **Functions/variables**: snake_case (e.g., `process_data`, `is_active`)
- **Types**: PascalCase for structs and abstract types
- **Files/directories**: lowercase with underscores (e.g., `src/data_processing.jl`)

## Function Guidelines

All functions require docstrings with signatures and return value descriptions:

```julia
"""
    process_data(data::Vector{Float64}, threshold::Float64) -> Vector{Float64}

Process input data by applying a threshold filter.
"""
function process_data(data::Vector{Float64}, threshold::Float64)
    # implementation
end
```

## Struct Definitions

- Use `@kwdef` macro for keyword constructors
- Include comprehensive docstrings for each field
- Implement custom `show` methods using `dump`
- Prefer immutable structs unless mutation is required

## Error Handling

- Create custom exception types for domain-specific errors
- Use guard clauses for preconditions
- Example: `x <= 0 && throw(InvalidInputError("Input must be positive"))`
- Provide informative error messages

## Performance Optimization

- Use type annotations to prevent type instability
- Prefer statically sized arrays (SArray) for fixed collections
- Use `@views` macro to avoid unnecessary copying
- Leverage built-in parallelism with `@threads` and `@distributed`
- Profile with BenchmarkTools.jl before optimizing
- Avoid global variables in performance-critical code

## Testing Structure

- Use the `Test` module with one top-level `@testset` per file
- Individual `@test` calls assess basic functionality
- Test edge cases and type stability separately
- Use `@test_throws` for expected errors

## Code Organization

- Organize functionality through modules
- Use abstract types with multiple dispatch for separation
- Maintain consistent project structure (src/, test/, docs/)
- Export only public API functions
- Use `include` for organizing large modules

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…