Quick Start - CLI¶
This is the terminal-first path from an empty profile to a published site and package.
1. Install the CLI¶
pipx install pypi-profile
2. Init¶
Create the starting file:
pypi-profile init --username your-pypi-name --output pypi_profile.toml
3. Import¶
The CLI does import through init.
Import from live services:
pypi-profile init --username your-pypi-name --fetch --output pypi_profile.toml --force
Import from JSON Resume:
pypi-profile init --from-json-resume resume.json --output pypi_profile.toml --force
Check the result:
pypi-profile inspect pypi_profile.toml
4. Add identity sites¶
The CLI does not have a dedicated add-identity-site command. Add [[profiles]] entries directly in pypi_profile.toml.
[[profiles]]
kind = "github"
label = "GitHub"
url = "https://github.com/your-name"
verification = "self_asserted"
rel_me = true
stored_proof = ""
[[profiles]]
kind = "website"
label = "Personal site"
url = "https://example.com"
verification = "self_asserted"
rel_me = true
stored_proof = ""
5. Key generation¶
Generate the minisign keypair:
pypi-profile keygen
If pypi_profile.toml is in the current directory, keygen patches [verification].public_key automatically.
6. Sign claims and update proofs¶
Sign a single URL when you want the token immediately:
pypi-profile sign controls-url pypi_profile.toml --url https://github.com/your-name
Then batch-write stored_proof values into the TOML:
pypi-profile update-proofs pypi_profile.toml
Use --force when you need to re-sign existing entries.
7. Publish signatures¶
Publish each proof token on the external page it proves. For CLI workflows, that usually means:
- copy the token printed by
sign, or copystored_prooffrompypi_profile.toml - paste it onto the matching external page
- verify the round-trip
pypi-profile verify pypi_profile.toml
If the platform is character-limited, sign supports --compact.
8. Publish the static site¶
Build the static output:
pypi-profile build pypi_profile.toml --output dist
Use --base-url for subpath deployments such as GitHub Pages project sites:
pypi-profile build pypi_profile.toml --output dist --base-url /your-repo
Publish the generated dist directory to your static host.
9. Publish the package¶
Package publishing is outside pypi-profile itself. Publish the Python distribution that contains pypi_profile.toml.
In the example profile packages in this repo, that means:
- the wheel includes
pypi_profile.toml - the package can be built with
uv build - PyPI upload happens through the package's normal release workflow
If you are using the pluggy-style package layout, also register a pypi_profile.plugins entry point as described in Advanced usage: pluggy plugins.