Help language development. Donate to The Perl Foundation

App::Mi6 cpan:SKAJI last updated on 2021-12-02


Actions Status


App::Mi6 - minimal authoring tool for Raku


$ mi6 new Foo::Bar        # create Foo-Bar distribution for CPAN ecosystem
$ mi6 new --zef Foo::Bar  # create Foo-Bar distribution for Zef ecosystem

$ mi6 build    # build the distribution and re-generate
$ mi6 test     # run tests
$ mi6 release  # release your distribution to CPAN/Zef ecosystem (configured by dist.ini)


First make sure you have rakudo v2020.05 or later. If not, install rakudo from


$ zef install App::Mi6


App::Mi6 is a minimal authoring tool for Raku. Features are:


Can I customize mi6 behavior?

Yes. Use dist.ini:

; dist.ini
name = Your-Module-Name

; if you want to disable generating from main module's pod, then:
; enable = false
; if you want to change a file that generates, then:
; filename = lib/Your/Tutorial.pod

[UploadToCPAN]   ; Upload your distribution to CPAN ecosystem
; [UploadToZef]  ; You can also use UploadToZef instead, to upload your distribution to Zef ecosystem

; if you want to prune files when packaging, then
; filename = utils/
; you can use Raku regular expressions
; match = ^ 'xt/'

; if you do not want to list some files in META6.json as "provides", then
; filename = lib/Should/Not/List/Provides.rakumod

; if you want to add badges to, then
; provider =
; provider =
; provider = appveyor
; provider = github-actions/name

How can I manage depends, build-depends, test-depends?

Write them to META6.json directly :).

Where is the spec of META6.json?

See also The Meta spec, Distribution, and CompUnit::Repository explained-ish by ugexe.

What is the format of the .pause file?

Mi6 uses the .pause file in your home directory to determine the username. This is a flat text file, designed to be compatible with the .pause file used by the Perl5 cpan-upload module ( Note that this file only needs to contain the "user" and "password" directives. Unknown directives are ignored.

An example file could consist of only two lines:

user your_pause_username
password your_pause_password

Replace your_pause_username with your PAUSE username, and replace your_pause_password with your PAUSE password.

This file can also be encrypted with GPG if you do not want to leave your PAUSE credentials in plain text.

What existing files are modified by mi6?

After the initial mi6 creation step, the following files are changed by mi6 during each build or release operation:

How is the version number specified?

When you are ready to release a module and enter at the CLI mi6 release, you will get a response presenting a proposed version number which you can either accept or enter a new one (which must be greater than the one offered by default).

During the release, mi6 updates the files mentioned above with the selected version number.

What is the required format of the Changes file before a release?

Ensure your Changes file looks like something like this before you start a release operation

    - Change entry line 1
    - Change entry line 2
    - Change entry line 3


What is the source of the author's email address?

The email is taken from the author's .gitconfig file. In general, that same email address should match any email address existing in a module's META6.json file.

How does one change an existing distribution created with mi6 to use Zef ecosystem instead of CPAN ecosystem?

First, the author must have an active account with fez which will create a .fez-config.json file in the author's home directory.

Then, starting with an existing module created with mi6, do the following:





Shoichi Kaji [email protected]


Copyright 2015 Shoichi Kaji

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.