Skip to main content

AI tooling for Python web applications.

Project description

Python Pop logo

python pop

python pop is an AI tooling package for Python frameworks. Package-authored AI assets live in a top-level .ai/ tree, install and update flows are agent-aware, project state is persisted in python-pop.json, and guidelines and skills are composed from detected framework and package modules.

Flask and Django are the first fully-authored frameworks in v1. FastAPI and Masonite remain detectable stubs so the package can grow without changing its shape.

Acknowledgements

python pop pulls heavy inspiration from Laravel Boost and its approach to AI-assisted framework tooling. Thank you to Taylor Otwell and the Laravel Boost team for building and openly sharing such a strong reference point for agent-aware developer tooling.

Please see THIRD_PARTY_NOTICES.md for more detailed attribution notes.

What it does

  • Detects the project framework and relevant Python packages from pyproject.toml, requirements*.txt, lockfiles, and source markers.
  • Composes managed guidelines from built-in and third-party modules.
  • Syncs built-in and user-added skills into agent-specific skill directories.
  • Installs MCP server configuration for supported agents.
  • Persists selected agents, modules, and managed features in python-pop.json.
  • Exposes a read-only stdio MCP server with project, Flask, and Django inspection tools.

Framework support

  • Flask: rich authored guidelines, skills, version-aware module selection, and read-only MCP for routes, blueprints, CLI commands, config, and extensions.
  • Django: rich authored guidelines, version-aware module selection, and read-only MCP for project inspection, routes, and management commands.
  • FastAPI: detectable stub module with placeholder guidance and stub MCP tool.
  • Masonite: detectable stub module with placeholder guidance and stub MCP tool.

Planned assets for future framework and dependency versions are bundled as placeholders and are excluded by default unless --include-planned is selected.

Getting started

Install Python Pop into a Python environment that is available from the project you want to configure:

python -m pip install python-pop

From the root of a Python web project, run the interactive installer:

python-pop install --project-root .

The installer detects the project framework, asks which AI agents to configure, writes managed guidelines and skills, configures MCP where supported, and persists the selected state in python-pop.json.

For a project-local, portable setup, use a dedicated virtual environment and run Python Pop from there:

python3 -m venv .venv-python-pop
.venv-python-pop/bin/python -m pip install python-pop
.venv-python-pop/bin/python -m python_pop install --project-root .

After install, inspect what Python Pop sees in the project:

python-pop inspect --project-root . --json

For automation or CI, pass explicit flags instead of using prompts:

python-pop install --project-root . --agent opencode --agent claude_code --guidelines --skills --mcp --no-interaction

Commands

python-pop inspect --project-root /path/to/project --json
python-pop install --project-root /path/to/project
python-pop update --project-root /path/to/project
python-pop add-skill your-org/your-python-pop-skills
python-pop mcp
python-pop execute-tool TOOL_NAME BASE64_JSON_ARGS

install and update write agent-specific outputs based on the selected or auto-detected agents. Managed state is stored in python-pop.json at the project root.

Releases

Release tooling uses an isolated environment and keeps build and twine out of runtime dependencies.

  • Local release check: bash scripts/release-check.sh
  • Release guide: docs/releasing.md
  • Publish checklist: docs/publish-checklist.md
  • Changelog: CHANGELOG.md

python pop follows Semantic Versioning. The first public release is 0.1.0, and breaking changes always require a major version increment.

Security boundaries

  • Agent detection uses structured binary and filesystem checks instead of shell command execution.
  • MCP project inspection is constrained to the configured project root when the server is installed through Python Pop.
  • Remote GitHub skills are fetched from an immutable resolved ref and include a provenance sidecar file.
  • Remote skill auditing rejects missing SKILL.md, unsafe paths, symlinks, binary content, and oversized payloads by default.
  • --skip-audit exists as an explicit unsafe escape hatch for trusted local workflows.

Authored asset layout

The package authors its built-in AI content in a repo-root .ai/ tree and vendors that tree into the built wheel:

  • .ai/foundation.md
  • .ai/python-pop/...
  • .ai/python/...
  • .ai/flask/...
  • .ai/django/...
  • .ai/fastapi/...
  • .ai/masonite/...

Skills live beside modules under paths like .ai/flask/skill/flask-development/SKILL.md.

Extensibility

Third-party packages can register framework or package modules through the python_pop.modules entry point group. External modules participate in the same detection and guideline composition flow as built-in modules when selected during install/update.

Optional Flask integration

The core package is framework-agnostic. If you want the Flask CLI group and lightweight extension helpers, install the Flask extra:

pip install "python-pop[flask]"

Then use either the standalone CLI or the Flask CLI group:

flask --app your_project python-pop inspect
flask --app your_project python-pop install

Optional application integration:

from python_pop.extension import PythonPop

pop = PythonPop()
pop.init_app(app)

Privacy

python pop is intended to be packaged and reused across projects. It should not ship private repo names, proprietary paths, or repo memory from any consuming application. Project-specific details belong in the consumer repository, for example under .ai/guidelines/repo_memory/..., not inside this package.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_pop-0.1.1.tar.gz (65.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_pop-0.1.1-py3-none-any.whl (79.9 kB view details)

Uploaded Python 3

File details

Details for the file python_pop-0.1.1.tar.gz.

File metadata

  • Download URL: python_pop-0.1.1.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for python_pop-0.1.1.tar.gz
Algorithm Hash digest
SHA256 319d584acf3771544b780bd7e5f7440ba55b2e206c9f0e6ad8bf2e11569d16ce
MD5 fa6f4ef3c70a62b467a2472f5ed4f35f
BLAKE2b-256 5872f4782efa65f0ee254391bf6ec51958004723a5d8bdc8002c097d21506f2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_pop-0.1.1.tar.gz:

Publisher: release.yml on PDXfoster/python_pop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_pop-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: python_pop-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 79.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for python_pop-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0e436db77b8d5ae6b85b0abe2bfa3743b5a7c0a72ae5138bbffade043d499775
MD5 2fa056f906f569862844ea5ab8646373
BLAKE2b-256 5e8a4a0d1b77c8f56701e7d4773d902542422b80584ddc7119e528624be0c262

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_pop-0.1.1-py3-none-any.whl:

Publisher: release.yml on PDXfoster/python_pop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page