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.0.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.0-py3-none-any.whl (79.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python_pop-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 ec67ae013297b69403b99b6c6fb1ba69f68023a8b1ce2af8382f194d6390efb2
MD5 f05872d3d439c47e9b2b729a448427e9
BLAKE2b-256 50ce8d49e10e7624b075bb2b108fe4fbfb393d23b72b52c7cadc9a6d7eccb079

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_pop-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: python_pop-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b249025123357a26ddc4b01762af2559fc569d5465cce1c5a2f6c494904c611e
MD5 f426bdc0a14af3d076c72e3a94e39fd9
BLAKE2b-256 3f305f7b267056e9c55b4a06769f5be3a13986b94086be85a9ff1882d60f54fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_pop-0.1.0-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