Skip to main content
Generalhashgraph-online

generating-julia-package

Use when you create a JuliaLang package

Stars
336
Source
hashgraph-online/awesome-codex-plugins
Updated
2026-05-27
Slug
hashgraph-online--awesome-codex-plugins--generating-julia-package
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/hashgraph-online/awesome-codex-plugins/HEAD/plugins/AtelierArith/atelier-arith-julia-development-skills/skills/generating-julia-package/SKILL.md -o .claude/skills/generating-julia-package.md

Drops the SKILL.md into .claude/skills/generating-julia-package.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Creating a Julia Package

Project Environment

If you want to create a simple script that depends on external libraries, you should create a "project environment". This means making a Project.toml file like the one below.

[deps]
"<Installed Package 1>" = "<UUID for Installed Package 1>"
"<Installed Package 2>" = "<UUID for Installed Package 2>"
"<Installed Package 3>" = "<UUID for Installed Package 3>"

To install an external library (for example, TargetPackage), run the following in your terminal:

julia --project -e 'using Pkg; Pkg.add("TargetPackage")'

Package Directory

If you want to create a reusable package or a larger scale script, you should create a "package directory".

Choosing the layout

Default: in-place layout. Create ./Project.toml and ./src/MyPkg.jl directly in the current working directory, with no subdirectory named after the package. Use this whenever the user asks to "create a package MyPkg" without further qualification.

Opt-in: subdirectory layout. Only use this when the user explicitly asks for a subdirectory — for example "create the package under a new directory", "サブディレクトリを作って", "MyPkg/ 配下に作って", or when the user is bootstrapping multiple packages side by side under a single workspace and a subdirectory is necessary to disambiguate them.

Do NOT use Pkg.generate("MyPkg") for the in-place layout — it always creates a subdirectory. The in-place layout is the default and must be produced by hand-writing the files (see the steps below).

In-place layout (default, no subdirectory)

To create Project.toml and src/MyPkg.jl directly in the current working directory:

  1. Generate a UUID for the uuid field of Project.toml:

    $ julia -E 'using UUIDs; string(uuid4())'
    "43d6671a-6eab-408d-9ef9-8f584d9146fb" # Example output.
    
  2. Write ./Project.toml with the package name and the UUID from step 1:

    name = "MyPkg"
    uuid = "43d6671a-6eab-408d-9ef9-8f584d9146fb"
    authors = ["Your Name <you@example.com>"]
    version = "0.1.0"
    
  3. Write ./src/MyPkg.jl with the module skeleton:

    module MyPkg
    
    greet() = "Hello"
    
    end # module MyPkg
    
  4. Verify by loading the package from the current directory:

    $ julia --project=. -e 'using MyPkg; println(MyPkg.greet())'
    

Subdirectory layout (opt-in only)

Only use this when the user explicitly asks for it. To create a package named MyPkg under a new subdirectory, run:

$ julia -e 'using Pkg; Pkg.generate("MyPkg")'

This will create:

$ tree
.
└── MyPkg
    ├── Project.toml
    └── src
        └── MyPkg.jl

3 directories, 2 files