Use when you create a JuliaLang package
Scanned 9/12/2026
Install to Claude Code
npx -y skills add thedixitjain/the-mega-skill-library --skill generating-julia-package --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Generating Julia Package?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-generating-julia-package)More formats (shields.io, HTML) on the badges page.
---
name: generating-julia-package
description: "Use when you create a JuliaLang package"
category: general-purpose
source_repo: hashgraph-online/awesome-codex-plugins
source_path: "plugins/AtelierArith/atelier-arith-julia-development-skills/skills/generating-julia-package/SKILL.md"
source_url: https://github.com/hashgraph-online/awesome-codex-plugins/blob/HEAD/plugins/AtelierArith/atelier-arith-julia-development-skills/skills/generating-julia-package/SKILL.md
---
# 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.
```toml
[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:
```sh
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`:
```sh
$ 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:
```toml
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:
```julia
module MyPkg
greet() = "Hello"
end # module MyPkg
```
4. Verify by loading the package from the current directory:
```sh
$ 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:
```sh
$ julia -e 'using Pkg; Pkg.generate("MyPkg")'
```
This will create:
```sh
$ tree
.
└── MyPkg
├── Project.toml
└── src
└── MyPkg.jl
3 directories, 2 files
```
---
**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/AtelierArith/atelier-arith-julia-development-skills/skills/generating-julia-package/SKILL.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!