scala-cli-adding-directives

star 633

Add or change using directives in Scala CLI. Use when adding a new //> using directive, registering a directive handler, or editing directive preprocessing.

VirtusLab By VirtusLab schedule Updated 3/18/2026

name: scala-cli-adding-directives description: Add or change using directives in Scala CLI. Use when adding a new //> using directive, registering a directive handler, or editing directive preprocessing.

Adding a new directive (Scala CLI)

  1. Create a case class in modules/directives/src/main/scala/scala/build/preprocessing/directives/ extending one of:

    • HasBuildOptions — produces BuildOptions directly
    • HasBuildOptionsWithRequirements — produces BuildOptions with scoped requirements (e.g. test.dep)
    • HasBuildRequirements — produces BuildRequirements (for //> require)
  2. Annotate: @DirectiveLevel(SpecificationLevel.EXPERIMENTAL), @DirectiveDescription("…"), @DirectiveUsage("…"), @DirectiveExamples("…"), @DirectiveName("key") on fields.

  3. Companion: val handler: DirectiveHandler[YourDirective] = DirectiveHandler.derive

  4. Register in modules/build/.../DirectivesPreprocessingUtils.scala in the right list: usingDirectiveHandlers, usingDirectiveWithReqsHandlers, or requireDirectiveHandlers.

  5. Regenerate reference docs: ./mill -i 'generate-reference-doc[]'.run

CLI options always override directive values when both set the same thing.

Install via CLI
npx skills add https://github.com/VirtusLab/scala-cli --skill scala-cli-adding-directives
Repository Details
star Stars 633
call_split Forks 161
navigation Branch main
article Path SKILL.md
More from Creator