Cli tools
About
One of available interfaces to use PAA capabalities is cli tools. After installing package-auto-assembler one can view the list of available cli tools like shown below.
paa --help
Usage: paa [OPTIONS] COMMAND [ARGS]...
Package Auto Assembler CLI tool.
Options:
--help Show this message and exit.
Commands:
add-mcp Register package MCP module in codex/claude...
checkpoint-create Create a package checkpoint in internal...
checkpoint-list List package checkpoints from internal...
checkpoint-prune Prune local checkpoint history.
checkpoint-show Show details for a specific checkpoint...
cleanup-agent-skills Clean PAA-managed skills from .agents/.claude...
checkout Checkout package checkpoint.
check-deps-compat Check compatibility of declared dependency...
check-licenses Check licenses of the module.
check-vulnerabilities Check vulnerabilities of the module.
convert-drawio-to-png Converts drawio file to .png
extract-module-artifacts Extracts artifacts from packaged module.
extract-module-mcp Extract MCP module from packages that have it...
extract-module-pyproject Extracts package pyproject metadata from...
extract-module-requirements Extract module requirements.
extract-module-routes Extracts routes for fastapi from packages...
extract-module-site Extracts static mkdocs site from packaged...
extract-module-streamlit Extracts streamlit from packages that have...
extract-skill Extract a single skill from an installed...
extract-skills Extract all skills from an installed package.
extract-tracking-version Get latest package version.
init-config Initialize config file
init-api-config Initialize API run config file.
init-api Create API routes scaffold for a package in...
init-cli Create CLI scaffold for a package in PPR.
init-streamlit-config Initialize Streamlit run config file.
init-streamlit Create Streamlit scaffold for a package in PPR.
init-mcp-config Initialize MCP run config file.
init-mcp Create MCP module scaffold for a package in...
init-paa Initialize paa tracking files and...
init-ppr Initialize ppr for a given workflows...
make-package Package with package-auto-assembler.
refresh-module-artifacts Refreshes module artifact from links.
remove-package Remove paa package from ppr
rename-package Rename paa package in ppr
run-api-routes Run fastapi with provided routes.
run-mcp Run MCP application from package or filepath.
run-pylint-tests Run pylint tests for a given module, file,...
run-streamlit Run streamlit application from the package.
show-module-artifacts Shows module artifacts.
show-module-artifacts-links Shows module artifact links.
show-module-info Shows module info.
show-module-licenses Shows module licenses.
show-module-list Shows module list.
show-module-mcp Show MCP module availability and registered...
show-module-requirements Shows module requirements.
show-ref-local-deps Shows paths to local dependencies...
test-install Test install module into local environment.
unfold-package Unfold paa package inside ppr
update-release-notes Update release notes.
Available cli tools usually employ multiple internal components and range from relatively simple ones to more complex.
For interface-level guidance on package CLI module layout and imports, see interfaces/cli.md.
Description of tools
Initializing PAA
Creating config file could be useful to avoid providing parameters manually. If no config file will be provided, by default values from .paa.config will be used.
paa init-config --help
Usage: paa init-config [OPTIONS]
Initialize config file
Options:
--full If checked, dirs beyond essential would be mapped.
--help Show this message and exit.
MCP hosting config scaffold can be initialized separately:
paa init-mcp-config --help
Usage: paa init-mcp-config [OPTIONS]
Initialize MCP run config file.
Options:
--config TEXT Path to mcp config scaffold file. [default: .paa.mcp.config]
--force If checked, existing mcp config will be overwritten.
--help Show this message and exit.
FastAPI run config scaffold can be initialized separately:
paa init-api-config --help
Usage: paa init-api-config [OPTIONS]
Initialize API run config file.
Options:
--config TEXT Path to api config scaffold file. [default: .paa.api.config]
--force If checked, existing api config will be overwritten.
--help Show this message and exit.
API routes scaffold can be initialized separately:
paa init-api --help
Usage: paa init-api [OPTIONS] MODULE_NAME
Create API routes scaffold for a package in PPR.
Options:
--config TEXT Path to config file for paa. [default: .paa.config]
--force If checked, overwrite existing api routes module.
--help Show this message and exit.
CLI scaffold can be initialized separately:
paa init-cli --help
Usage: paa init-cli [OPTIONS] MODULE_NAME
Create CLI scaffold for a package in PPR.
Options:
--config TEXT Path to config file for paa. [default: .paa.config]
--force If checked, overwrite existing cli module.
--help Show this message and exit.
Streamlit config scaffold can be initialized separately:
paa init-streamlit-config --help
Usage: paa init-streamlit-config [OPTIONS]
Initialize Streamlit run config file.
Options:
--config TEXT Path to streamlit config scaffold file. [default:
.paa.streamlit.config]
--force If checked, existing streamlit config will be overwritten.
--help Show this message and exit.
Streamlit app scaffold can be initialized separately:
paa init-streamlit --help
Usage: paa init-streamlit [OPTIONS] MODULE_NAME
Create Streamlit scaffold for a package in PPR.
Options:
--config TEXT Path to config file for paa. [default: .paa.config]
--force If checked, overwrite existing streamlit module.
--help Show this message and exit.
Packaging repository needs a place to keep some tracking files.
Running it first time also initializes .paa.config and the second time
will create directories specified there, if not already created.
paa init-paa --help
Usage: paa init-paa [OPTIONS]
Initialize paa tracking files and directores from .paa.config
Options:
--full If checked, dirs beyond essential would be mapped.
--help Show this message and exit.
init-paa runs in two steps:
- If
.paa.configis missing, it is created first and command exits. - On the next run, directories are initialized from config values, with runtime defaults used for omitted path keys.
The package provides some templates for packaging repositories. Packaging repository after some additional preparations should allow to create and publish new packages with a use of ci/cd pipeline.
paa init-ppr --help
Usage: paa init-ppr [OPTIONS]
Initialize ppr for a given workflows platform.
Options:
--github If checked, git actions template would be set up.
--azure If checked, azure devops pipelines template would be set up.
--full If checked, dirs beyond essential would be mapped.
--help Show this message and exit.
init-ppr requires selecting a platform (--github or --azure).
On first run with selected platform:
- workflow templates are initialized (.github or .azure);
- .paa.config is also initialized if missing.
To initialize directories from config after that, run either:
- paa init-ppr --<selected-platform> again, or
- paa init-paa.
For a full field reference of .paa.config, see:
- extra_docs/package_auto_assembler/components/.paa.config.md
Creating packages
Installing packages for a test in local environments could be a useful step to make sure everything works as expected before pushing changes to publishing repo. This creates an instance of the package in local environment with default version, with a greatly simplified building process that avoids making documentation, versioning and so on.
paa test-install [OPTIONS] MODULE_NAME
Usage: paa test-install [OPTIONS] MODULE_NAME
Test install module into local environment.
Options:
--config TEXT Path to config file for paa.
--module-filepath TEXT Path to .py file to be packaged.
--mapping-filepath TEXT Path to .json file that maps import to
install dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--fastapi-routes-filepath TEXT Path to .py file that routes for fastapi.
--dependencies-dir TEXT Path to directory with local dependencies of
the module.
--default-version TEXT Default version.
--check-vulnerabilities If checked, checks module dependencies with
pip-audit for vulnerabilities.
--skip-deps-compat-check If checked, skips dependency compatibility
check.
--check-full-deps-compat If checked, runs full dependency resolver
compatibility check.
--build-mkdocs If checked, builds mkdocs documentation.
--check-licenses If checked, checks module dependencies
licenses.
--keep-temp-files If checked, setup directory won't be removed
after setup is done.
--skip-deps-install If checked, existing dependencies from env
will be reused.
--checkpoint If checked, creates checkpoint before package
build/install.
--help Show this message and exit.
Checkpoint behavior for test-install:
- Default: no checkpoint.
- Use --checkpoint to store a checkpoint for the tested state.
- The checkpoint version label uses effective run version (usually 0.0.0 unless overridden).
Making package based on provided parameters can be useful in ci/cd pipelines to streamline creation of packages before publishing from something that could be as simple as .py file.
paa make-package --help
Usage: paa make-package [OPTIONS] MODULE_NAME
Package with package-auto-assembler.
Options:
--config TEXT Path to config file for paa.
--module-filepath TEXT Path to .py file to be packaged.
--mapping-filepath TEXT Path to .json file that maps import to
install dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--fastapi-routes-filepath TEXT Path to .py file that routes for fastapi.
--dependencies-dir TEXT Path to directory with local dependencies of
the module.
--kernel-name TEXT Kernel name.
--python-version TEXT Python version.
--default-version TEXT Default version.
--ignore-vulnerabilities-check If checked, does not check module
dependencies with pip-audit for
vulnerabilities.
--skip-deps-compat-check If checked, skips dependency compatibility
check.
--skip-full-deps-compat-check If checked, skips full dependency resolver
compatibility check.
--ignore-licenses-check If checked, does not check module licenses
for unexpected ones.
--example-notebook-path TEXT Path to .ipynb file to be used as README.
--execute-notebook If checked, executes notebook before turning
into README.
--log-filepath TEXT Path to logfile to record version change.
--versions-filepath TEXT Path to file where latest versions of the
packages are recorded.
--no-checkpoint If checked, skips checkpoint creation before
package build.
--help Show this message and exit.
Checkpoint behavior for make-package:
- Default: checkpoint is created.
- Use --no-checkpoint to skip checkpoint creation.
- Packaged checkpoint history is automatically pruned to exclude 0.0.0 checkpoints.
Execution flows
The following summarizes what happens internally for the main packaging commands.
make-package flow
- Load
.paa.configand resolve package-specific paths. - Initialize
PackageAutoAssemblerwith packaging, docs, artifacts, and validation settings. - Read metadata from module/CLI and calculate version (plus release notes when enabled).
- Prepare setup directory and merge local dependencies.
- Extract requirements from module, CLI, API routes, and streamlit sources.
- Build docs inputs (README/extra docs/mkdocs).
- Create checkpoint by default (unless
--no-checkpoint). - Export pruned checkpoint history for packaging (drop
0.0.0checkpoints). - Collect artifacts and build package files (
setup.py+ distribution artifacts).
test-install flow
- Load
.paa.configand resolve package-specific paths. - Initialize
PackageAutoAssemblerfor local build/install flow. - Read metadata and assign default version.
- Prepare setup directory and merge local dependencies.
- Extract requirements from module, CLI, API routes, and streamlit sources.
- Optionally build mkdocs, then prepare artifacts and setup file.
- Optionally create checkpoint when
--checkpointis provided. - Build package and install it into current environment.
- Remove temporary setup directory unless
--keep-temp-filesis set.
check-deps-compat flow
- Load
.paa.configand resolve package paths. - Initialize
PackageAutoAssemblerin compatibility-check mode. - Prepare temporary setup directory and resolve effective requirements.
- Run static constraint compatibility check.
- Optionally run full resolver check when
--fullis provided. - Print pass/fail status and clean temporary setup directory.
Compatibility defaults
| Command | Static check | Full resolver check |
|---|---|---|
paa make-package |
enabled by default | enabled by default |
paa test-install |
enabled by default | disabled by default |
paa check-deps-compat |
enabled | optional (--full) |
History flow
This section summarizes how checkpoint history is stored, created, packaged, and restored.
Where history lives:
- Local unfolded history: .paa/history/<package>/git
- Packaged history payload: .paa.tracking/git (work tree) and .paa.tracking/git_repo (git metadata)
History creation:
- Manual: paa checkpoint-create <package>
- Test install: paa test-install <package> --checkpoint (optional)
- Make package: paa make-package <package> (default unless --no-checkpoint)
History packaging behavior:
- make-package exports a pruned checkpoint history for packaged artifacts.
- By default, checkpoints with version 0.0.0 are excluded from packaged history.
- Local history is not modified by this packaging-time pruning.
- To prune local history explicitly, use paa checkpoint-prune.
History restore and usage:
- paa checkpoint-list / paa checkpoint-show read available checkpoint history from package context.
- paa checkout restores selected checkpoint content.
- Default checkout target is latest stable tag (vX.Y.Z); use explicit dev-latest or commit hash when needed.
History maintenance:
- paa checkpoint-prune <package> defaults to pruning 0.0.0 checkpoints.
- --dry-run previews prune effect.
- --version <x.y.z> prunes specific version checkpoints.
- --commit <sha_prefix> prunes a specific checkpoint commit.
Typical sequence:
# 1) Create local dev checkpoint(s)
paa checkpoint-create package-auto-assembler
# 2) Build package (checkpoint created by default; packaged history prunes 0.0.0)
paa make-package package-auto-assembler
# 3) Inspect history
paa checkpoint-list package-auto-assembler
# 4) Restore explicit checkpoint into unfolded files only
paa checkout package-auto-assembler dev-latest --unfold --no-install
Creating checkpoints
Use checkpoint-create for explicit/manual checkpoints.
paa checkpoint-create --help
Usage: paa checkpoint-create [OPTIONS] MODULE_NAME
Create a package checkpoint in internal history store.
Options:
--version-label TEXT Version label to tag checkpoint with. [default:
0.0.0]
--source-event TEXT Source event label recorded in checkpoint commit
message. [default: manual]
--help Show this message and exit.
Examples:
# Manual dev checkpoint
paa checkpoint-create package-auto-assembler
# Explicit version checkpoint
paa checkpoint-create package-auto-assembler --version-label 1.2.3 --source-event release
Navigating and inspecting history
Use checkpoint-list to navigate available checkpoints and checkpoint-show for details.
paa checkpoint-list package-auto-assembler
paa checkpoint-show package-auto-assembler dev-latest
paa checkpoint-list --help
Usage: paa checkpoint-list [OPTIONS] MODULE_NAME
List package checkpoints from internal history store.
Options:
--limit INTEGER Maximum number of checkpoints to list. [default: 20]
--help Show this message and exit.
Checking out previous versions
Checkout target resolution:
- Default paa checkout <package> looks for latest stable tag (vX.Y.Z).
- If stable tags are not present, use explicit target such as dev-latest or commit hash.
Checkout behavior:
- Default checkout applies target state in a temporary workspace and runs test-install from there; unfolded files are not changed.
- --unfold additionally syncs the checked-out state into unfolded package files in current workspace.
- --no-install skips the reinstall step.
- --unfold --no-install updates unfolded files only (no reinstall).
Checkout change summary:
- written: files created in unfolded package scope.
- updated: existing files overwritten to match checkpoint target.
- deleted: package-scoped files removed because they are absent in checkpoint target.
Examples:
# Preview planned checkout changes
paa checkout package-auto-assembler dev-latest --dry-run --unfold --no-install
# Apply only to unfolded files (no reinstall)
paa checkout package-auto-assembler dev-latest --unfold --no-install
# Apply and reinstall from checked-out temp workspace
paa checkout package-auto-assembler dev-latest
Pruning history
Use checkpoint-prune to remove old or specific checkpoints from local history.
paa checkpoint-prune --help
Usage: paa checkpoint-prune [OPTIONS] MODULE_NAME
Prune local checkpoint history.
Options:
--commit TEXT Specific checkpoint commit (or prefix) to remove.
--version TEXT Remove checkpoints for a specific version label.
--dry-run Show what would be pruned without changing history.
--help Show this message and exit.
Examples:
# Default prune behavior: remove checkpoints with version=0.0.0
paa checkpoint-prune package-auto-assembler
# Preview prune effect without modifying history
paa checkpoint-prune package-auto-assembler --dry-run
# Remove checkpoints for a specific version
paa checkpoint-prune package-auto-assembler --version 0.1.2
# Remove one specific checkpoint commit
paa checkpoint-prune package-auto-assembler --commit 03aa890
Working with packages within PAA
Published packages could be installed and unfolded for editing anywhere, given that they are independent of a packaging repositories and enviroment that produced them.
paa unfold-package --help
Usage: paa unfold-package [OPTIONS] MODULE_NAME
Unfold paa package inside ppr
Options:
--debug If checked, debug messages will be shown.
--help Show this message and exit.
Since packaging repository is just a workbench, ability to remove packages that no longer being published there could be useful.
paa remove-package --help
Usage: paa remove-package [OPTIONS] MODULE_NAME
Remove paa package from ppr
Options:
--debug If checked, debug messages will be shown.
--help Show this message and exit.
Ability to unfold packages created with package-auto-assembler, paired with a method to rename them, would allow to fork the package and start publishing it in the same package storage, just under different name.
paa rename-package --help
Usage: paa rename-package [OPTIONS] MODULE_NAME NEW_MODULE_NAME
Rename paa package in ppr
Options:
--debug If checked, debug messages will be shown.
--help Show this message and exit.
Checking dependencies
Checking vulnerabilities with pip-audit is usefull. This checks vulnerabilities of .py files and its local dependencies with pip-audit.
paa check-vulnerabilities --help
Usage: paa check-vulnerabilities [OPTIONS] MODULE_NAME
Check vulnerabilities of the module.
Options:
--config TEXT Path to config file for paa.
--module-filepath TEXT Path to .py file to be packaged.
--mapping-filepath TEXT Path to .json file that maps import to install
dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--dependencies-dir TEXT Path to directory with local dependencies of the
module.
--help Show this message and exit.
Checking compatibility of dependency constraints can be done separately as a dedicated CLI call.
paa check-deps-compat --help
Usage: paa check-deps-compat [OPTIONS] MODULE_NAME
Check compatibility of declared dependency constraints for the module.
Options:
--config TEXT Path to config file for paa.
--module-filepath TEXT Path to .py file to be packaged.
--mapping-filepath TEXT Path to .json file that maps import to install
dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--dependencies-dir TEXT Path to directory with local dependencies of the
module.
--full If checked, runs full dependency resolver
compatibility check.
--help Show this message and exit.
Compatibility defaults by command:
- paa make-package: static and full compatibility checks run by default. Use --skip-deps-compat-check and/or --skip-full-deps-compat-check to disable.
- paa test-install: static compatibility check runs by default, full resolver check is off by default. Use --check-full-deps-compat to enable full resolver check.
When compatibility fields in .paa.config are omitted or set to null, command defaults above are used.
Checking license labels of module dependencies tree could be useful to prevent using some dependencies early on.
Usage: paa check-licenses [OPTIONS] MODULE_NAME
Check licenses of the module.
Options:
--config TEXT Path to config file for paa.
--module-filepath TEXT Path to .py file to be packaged.
--mapping-filepath TEXT Path to .json file that maps import to
install dependecy names.
--license-mapping-filepath TEXT
Path to .json file that maps license labels
to install dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--dependencies-dir TEXT Path to directory with local dependencies of
the module.
--skip-normalize-labels If checked, package license labels are not
normalized.
--help Show this message and exit.
Running apps from packages
Packaging process could help building APIs as well. This package would call routes stored within other packages and routes stored in files to form one application, so that repeatable structure does not need to copied between projects, but instead built in one places and extended with some config files in many. Since routes are python code that can have its dependencies, it makes sense to store them within packages sometimes to take advantage of automated dependency handling and import code straight from the package, eliminating in turn situation when package release in no compatible anymore with routes based on them.
Parameters for fastapi app description, middleware and run could be supplied via optional .paa.api.config file, with DESCRIPTION , MIDDLEWARE and RUN dictionary of parameters respectively.
It could be beneficial to add a static page with documentation, so additional pages could be addded. First one would be accessible via \mkdocs and the following ones via \mkdocs {i+1}. Static package within package, that were packages by package-auto-assemble>0.5.1 would be accessible via \{package_name}\docs if available.
paa run-api-routes --help
Usage: paa run-api-routes [OPTIONS]
Run fastapi with provided routes.
Options:
--api-config TEXT Path to yml config file with app description, middleware
parameters, run parameters, `.paa.api.config` is used by
default.
--host TEXT The host to bind to.
--port TEXT The port to bind to.
--package TEXT Package names from which routes will be added to the app.
--route TEXT Paths to routes which will be added to the app.
--docs TEXT Paths to static docs site which will be added to the app.
--help Show this message and exit.
For detailed FastAPI interface workflows, see interfaces/fastapi.md.
One of the convinient ways to access packaged code could be a streamlit application. This package allows for streamlit application to be stored within a package and then run with the following. Parameters that would be passed to ~/.streamlit/config.toml can be provided via optional .paa.streamlit.config file, at which point it would copied to default location. The command can be used to run streamlit apps from a selected package, built with the tool, or from normal .py file with streamlit app.
paa run-streamlit --help
Usage: paa run-streamlit [OPTIONS]
Run streamlit application from the package.
Options:
--app-config TEXT Path to yml config for streamlit app.
--host TEXT The host to bind to.
--port TEXT The port to bind to.
--package TEXT Package name from which streamlit app should be run.
--path TEXT Path to streamlit app.
--help Show this message and exit.
For detailed Streamlit interface workflows, see interfaces/streamlit.md.
MCP tools
PAA supports MCP module scaffolding, package extraction, local execution, and agent registration.
paa init-mcp --help
Usage: paa init-mcp [OPTIONS] MODULE_NAME
Create MCP module scaffold for a package in PPR.
Options:
--config TEXT Path to config file for paa.
--module-name TEXT Module name if different from argument label.
--mcp-module-filepath TEXT
Path to .py file for MCP module.
--force If checked, overwrite existing MCP module.
--help Show this message and exit.
paa add-mcp --help
Usage: paa add-mcp [OPTIONS] MODULE_NAME
Register package MCP module in codex/claude client.
Options:
--target [codex|claude] Agent target for MCP registration.
--python-path TEXT Python interpreter to run MCP module with.
--server-name TEXT Optional MCP server name override.
--help Show this message and exit.
Notes:
- add-mcp registers MCP from installed package files.
- If no installed MCP module is found for selected package, command fails.
Example:
paa add-mcp your-package-1 --target codex --python-path /path/to/your/python
Flag guidance:
- --target is optional when auto-detection resolves a single target.
- --python-path is optional if default python points to desired environment.
- --server-name is optional unless you need a custom server ID in client config.
paa show-module-mcp --help
Usage: paa show-module-mcp [OPTIONS] LABEL_NAME
Show MCP module availability and registered tool list for an installed
package.
Options:
--tools If checked, inspect and show registered tool names.
--help Show this message and exit.
paa run-mcp --help
Usage: paa run-mcp [OPTIONS]
Run hosted MCP application(s) from package(s) and/or filepath(s).
Options:
--mcp-config TEXT Path to yml config file with MCP run settings and sources.
--package TEXT Package names from which MCP app should be run.
--path TEXT Path(s) to MCP module file.
--host TEXT Host to bind MCP server to.
--port INTEGER Port to bind MCP server to.
--transport [sse|streamable-http]
Hosted MCP transport mode.
--mount-path TEXT Optional mount path for SSE transport.
--mode [split|combine] Run mode for MCP hosting.
--server-prefix TEXT Server name prefix. In split mode used only
when explicitly provided.
--help Show this message and exit.
run-mcp source selection can come from flags (--package, --path) and/or .paa.mcp.config:
RUN:
host: "0.0.0.0"
port: 8000
transport: "streamable-http"
mount_path: null
mode: "split"
server_prefix: null
SOURCES:
packages:
- your-package-1
- your-package-2
paths: []
Mode and naming behavior:
- split (default): one server per source.
- combine: one server for all sources.
- In split, default naming has no prefix; prefix is applied only when explicitly provided (--server-prefix or config RUN.server_prefix).
- In combine, server name defaults to paa-http unless overridden.
For detailed MCP workflows, see interfaces/mcp.md.
run-mcp flag guidance:
- if .paa.mcp.config exists, command can run without explicit source flags.
- --host / --port only needed for non-default bind settings.
- --mode defaults to split.
- in split, --server-prefix is optional and applied only when explicitly set.
paa extract-module-mcp --help
Usage: paa extract-module-mcp [OPTIONS] PACKAGE_NAME
Extract MCP module from packages that have it into a file.
Options:
--output-dir TEXT Directory where MCP module extracted from the package
will be copied to.
--output-path TEXT Filepath to which MCP module extracted from the package
will be copied to.
--help Show this message and exit.
Extracting files from packages
Storing routes within package could be convinient, but extracting them from a package is not. To mitigate that, the following exists to extract routes.py from a package that contains it.
paa extract-module-routes --help
Usage: paa extract-module-routes [OPTIONS] PACKAGE_NAME
Extracts routes for fastapi from packages that have them into a file.
Options:
--output-dir TEXT Directory where routes extracted from the package will
be copied to.
--output-path TEXT Filepath to which routes extracted from the package will
be copied to.
--help Show this message and exit.
paa extract-module-site --help
Usage: paa extract-module-site [OPTIONS] PACKAGE_NAME
Extracts static mkdocs site from packaged module.
Options:
--output-dir TEXT Directory where routes extracted from the package will
be copied to.
--output-path TEXT Filepath to which routes extracted from the package will
be copied to.
--help Show this message and exit.
Another option to access the artifacts is to copy them to a selected directory.
paa extract-module-artifacts --help
Usage: paa extract-module-artifacts [OPTIONS] PACKAGE_NAME
Extracts artifacts from packaged module.
Options:
--artifact TEXT Name of the artifact to be extracted.
--output-dir TEXT Directory where artifacts extracted from the package
will be copied to.
--output-path TEXT Filepath to which artifact extracted from the package
will be copied to.
--help Show this message and exit.
Another option to access the packaged streamlit app is to copy it to a selected directory.
paa extract-module-streamlit --help
Usage: paa extract-module-streamlit [OPTIONS] PACKAGE_NAME
Extracts streamlit from packages that have them into a file.
Options:
--output-dir TEXT Directory where streamplit extracted from the package
will be copied to.
--output-path TEXT Filepath to which streamlit extracted from the package
will be copied to.
--help Show this message and exit.
To make package metadata directly reusable with uv/poetry, pyproject can be extracted from installed package tracking files, or generated in poetry style.
paa extract-module-pyproject --help
Usage: paa extract-module-pyproject [OPTIONS] PACKAGE_NAME
Extracts package pyproject metadata from installed package tracking.
Options:
--format [pep621|uv|poetry] Output format for extracted pyproject.
[default: pep621]
--output-dir TEXT Directory where extracted pyproject will be
copied/generated.
--output-path TEXT Filepath where extracted pyproject will be
copied/generated.
--help Show this message and exit.
By default, the command writes to ./pyproject.toml, which can be used directly by tools like uv and poetry.
paa extract-module-pyproject package_auto_assembler --format uv
paa extract-module-pyproject package_auto_assembler --format poetry --output-path ./pyproject.toml
PAA can also extract packaged agent skills.
paa extract-skill --help
Usage: paa extract-skill [OPTIONS] PACKAGE_NAME SKILL_NAME
Extract a single skill from an installed package.
Options:
--target [codex|claude] Agent target for auto-detected output path.
--output-dir TEXT Destination skills root. If omitted, target path is
auto-detected.
--help Show this message and exit.
paa extract-skills --help
Usage: paa extract-skills [OPTIONS] PACKAGE_NAME
Extract all skills from an installed package.
Options:
--target [codex|claude] Agent target for auto-detected output path.
--output-dir TEXT Destination skills root. If omitted, target path is
auto-detected.
--help Show this message and exit.
Auto-detection behavior for skill extraction:
- If --output-dir is provided, it is used directly.
- Otherwise PAA searches upward from the current directory and detects target roots from markers (.agents/.claude, AGENTS.md/CLAUDE.md).
- If both targets are detected, provide --target or --output-dir.
- If no target markers are found, PAA defaults to user-level codex path: ~/.agents/skills.
Examples:
paa extract-skill package_auto_assembler dependency-management-audit --target codex
paa extract-skills package_auto_assembler --target claude
Agent skills maintenance
Installed skills extracted by PAA include a small marker (.paa_skill_meta.yml), enabling safe cleanup of only PAA-managed entries.
paa cleanup-agent-skills --help
Usage: paa cleanup-agent-skills [OPTIONS]
Clean PAA-managed skills from .agents/.claude skills root.
Options:
--target [codex|claude] Agent target for auto-detected output path.
--output-dir TEXT Skills root to clean. If omitted, target path is
auto-detected.
--help Show this message and exit.
paa cleanup-agent-skills --target codex
Show modules info
Cli interface provides some additional tools to analyse locally installed packages if they were build with package-auto-assembler>0.4.2. These include methods to list modules, show module info, extract requirements.
paa show-module-list --help
Usage: paa show-module-list [OPTIONS]
Shows module list.
Options:
--tags TEXT Keyword tag filters for the package.
--help Show this message and exit.
paa show-module-info --help
Usage: paa show-module-info [OPTIONS] LABEL_NAME
Shows module info.
Options:
--keywords If checked, returns keywords for the package.
--classifiers If checked, returns classfiers for the package.
--docstring If checked, returns docstring of the package.
--author If checked, returns author of the package.
--author-email If checked, returns author email of the package.
--version If checked, returns installed version of the package.
--pip-version If checked, returns pip latest version of the package.
--help Show this message and exit.
paa show-module-requirements --help
Usage: paa show-module-requirements [OPTIONS] LABEL_NAME
Shows module requirements.
Options:
--help Show this message and exit.
paa show-module-licenses --help
Usage: paa show-module-licenses [OPTIONS] PACKAGE_NAME
Shows module licenses.
Options:
--normalize-labels If checked, package license labels are normalized.
--help Show this message and exit.
There is an option to package artifacts with the code. Packaged artifacts can be listed.
paa show-module-artifacts --help
Usage: paa show-module-artifacts [OPTIONS] LABEL_NAME
Shows module artifacts.
Options:
--help Show this message and exit.
It might be useful to inspect which artifacts come from links, whether these links are available and refresh these artifacts within installed package.
paa show-module-artifacts-links --help
Usage: paa show-module-artifacts-links [OPTIONS] LABEL_NAME
Shows module artifact links.
Options:
--help Show this message and exit.
A module can referance multiple other local dependencies. The following is meant to extract all of paths relates to the module within PPR.
paa show-ref-local-deps --help
Usage: paa show-ref-local-deps [OPTIONS] LABEL_NAME
Shows paths to local dependencies referenced in the module.
Options:
--config TEXT Path to config file for paa.
--module-dir TEXT Path to folder with .py file to be packaged.
--dependencies-dir TEXT Path to directory with local dependencies of
the module.
--help Show this message and exit.
Other
Some artifacts can come from links and there might be a need to refresh or even download these files (depending on how a link was provided).
paa refresh-module-artifacts --help
Usage: paa refresh-module-artifacts [OPTIONS] LABEL_NAME
Refreshes module artifact from links.
Options:
--help Show this message and exit.
Core of paa automation is the ability to extract requirements from .py files. The tool shown below is a part of requirements extraction pipeline, designed to run within PPR, but could also work outside, if imports are handled in a specific way (more in description).
paa extract-module-requirements --help
Usage: paa extract-module-requirements [OPTIONS] MODULE_NAME
Extract module requirements.
Options:
--config TEXT Path to config file for paa.
--module-dir TEXT Path to folder where module is stored.
--mapping-filepath TEXT Path to .json file that maps import to
install dependecy names.
--cli-module-filepath TEXT Path to .py file that contains cli logic.
--routes-module-filepath TEXT Path to .py file that contains fastapi
routes.
--streamlit-module-filepath TEXT
Path to .py file that contains streamlit
app.
--dependencies-dir TEXT Path to directory with local dependencies of
the module.
--show-extra If checked, list will show which
requirements are extra.
--skip-extra If checked, list will not include extra.
--help Show this message and exit.
Maintaining release notes could be very useful, but also tedious task. Since commit messages are rather standard practice, by taking advantage of them and constructing release notes based on them, each release could contain notes with appropriate version automatically, when itegrated into ci/cd pipeline, given that commit messages are written in a specific way.
paa update-release-notes --help
Usage: paa update-release-notes [OPTIONS] LABEL_NAME
Update release notes.
Options:
--version TEXT Version of new release.
--notes TEXT Optional manually provided notes string, where each
note is separated by ; and increment type is
provide in accordance to paa documentation.
--notes-filepath TEXT Path to .md wit release notes.
--max-search-depth TEXT Max search depth in commit history.
--use-pip-latest If checked, attempts to pull latest version from
pip.
--help Show this message and exit.
Running pylint tests is useful and usually done in pull request to PPR. It could also be run locally for all the modules or select modules and their local dependencies to identify modules that need improvements to pass preset threshold.
paa run-pylint-tests --help
Usage: paa run-pylint-tests [OPTIONS] [FILES]...
Run pylint tests for a given module, file, files or files in a directory.
Options:
--config TEXT Path to config file for paa.
--label-name TEXT Label name.
--module-dir TEXT Path to a directory where .py files are stored.
--threshold TEXT Pylint threshold.
--help Show this message and exit.
It might be useful to know what is the last version a given module that was published from the PPR, mostly within ci/cd workflows.
paa extract-tracking-version --help
Usage: paa extract-tracking-version [OPTIONS] MODULE_NAME
Get latest package version.
Options:
--config TEXT Path to config file for paa.
--help Show this message and exit.
Some pieces of documentation within PPR may come from drawio files. One of the steps in packaging process is to convert .drawio file for a package into .png files.
For this functionality to work, first some dependencies would need to be installed.
sudo apt-get update
sudo apt-get install -y wget xvfb libnotify4 libxml2-utils
wget https://github.com/jgraph/drawio-desktop/releases/download/v24.6.4/drawio-amd64-24.6.4.deb
sudo dpkg -i drawio-amd64-24.6.4.deb
sudo apt-get install -f
paa convert-drawio-to-png --help
Usage: paa convert-drawio-to-png [OPTIONS]
Converts drawio file to .png
Options:
--config TEXT Path to config file for paa.
--label-name TEXT Label name.
--drawio-dir TEXT Path to a directory where drawio files are stored.
--docs-dir TEXT Path to the output directory for .png file.
--help Show this message and exit.
Before conversion, existing drawio-generated PNG files for the selected package are cleaned from docs output to remove stale tabs from removed/renamed drawio pages. Notebook-generated PNG files (for example *_cell23_out0.png) are preserved.