From 192dbc8fc7e0a8d284413f9494ece0254dfc539e Mon Sep 17 00:00:00 2001 From: Abhiix0 <24r21a6778@mlrit.ac.in> Date: Sat, 15 Aug 2026 15:00:42 +0530 Subject: [PATCH 1/2] Polish: Readme tweaks for PYPI --- README.md | 235 ++++++++++++++++++++++++++++++++---------------------- uv.lock | 2 +- 2 files changed, 139 insertions(+), 98 deletions(-) diff --git a/README.md b/README.md index 478b3dc..9b1471b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ Spawn is a local CLI tool that transforms one command into a complete Python project foundation — directories, Git, dependencies, and a virtual environment set up automatically, so you can start building immediately. +[![PyPI](https://img.shields.io/pypi/v/spawnio?style=flat-square&color=blue)](https://pypi.org/project/spawnio/) +[![Downloads](https://img.shields.io/pypi/dm/spawnio?style=flat-square&color=brightgreen)](https://pypi.org/project/spawnio/) [![Python](https://img.shields.io/badge/Python-3.12+-blue?style=flat-square)](https://python.org) [![Tests](https://img.shields.io/badge/Tests-Passing-brightgreen?style=flat-square)](https://github.com/Abhiix0/spawn/actions) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) @@ -71,8 +73,6 @@ It's repetitive. It's inconsistent. And you haven't written a single line of *re | **Dependency installation** | `uv add` runs automatically with the right packages for your choices | | **Git + uv** | Optionally runs `git init`, `uv init`, and `uv venv` | | **Non-interactive mode** | Scaffold with `--name`/`--template`/etc. flags or a `--config` JSON file — zero prompts, safe for scripts and agents | -| **Agent context files** | Every project ships an `AGENTS.md`; add `--claude-md` for an identical `CLAUDE.md` alongside it | -| **Arrow-key menus** | Every prompt in `spawn create` is arrow-key/spacebar driven, not typed numbers | | **GitHub publishing** | Connects your project to an existing GitHub repo and pushes the initial commit | | **spawn doctor** | Scores your project's health out of 100, with per-category breakdowns and a prioritized next step | @@ -90,6 +90,28 @@ It's repetitive. It's inconsistent. And you haven't written a single line of *re ## Installation +**Option 1 — Install from PyPI (recommended)** + +```bash +pip install spawnio +``` + +or, using `uv`: + +```bash +uv tool install spawnio +``` + +or run it without installing: + +```bash +uvx --from spawnio spawn create +``` + +You can now run `spawn` from anywhere on your machine. + +**Option 2 — Install from source (for contributing)** + ```bash git clone https://github.com/Abhiix0/spawn.git cd spawn @@ -97,8 +119,6 @@ uv sync uv tool install . ``` -You can now run `spawn` from anywhere on your machine. - --- ## Usage @@ -120,20 +140,17 @@ Spawn rejects names with spaces or special characters, and tells you immediately **Step 2 — Pick a template** ``` -Use the arrow keys to move, Enter to select — the same pattern every prompt in Spawn follows. + 1 Backend API + 2 CLI Application + 3 Automation Tool + 4 AI Chatbot + 5 AI Agent + 6 RAG System + 7 Data Project + 8 MCP Server + 9 Custom Structure -``` -? Choose a template (Use arrow keys) - » Backend API - CLI Application - Automation Tool - AI Chatbot - AI Agent - RAG System - Data Project - MCP Server - Custom Structure -``` +Choose Template [1-9]: 1 ``` **Step 3 — Additional prompts** *(template-dependent — framework, provider, project type, and/or extras, depending on what you picked. See [Project Templates](#project-templates) below for each one's exact flow.)* @@ -191,16 +208,19 @@ my-api/ **Prompts:** ``` -? Choose a framework (Use arrow keys) - » fastapi - flask - django + 1 fastapi + 2 flask + 3 django + +Choose Framework [1-3]: 1 + + 1 ruff + 2 pytest + 3 docker + 4 github-actions -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ docker - ○ github-actions + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` **Available extras:** `ruff` `pytest` `docker` `github-actions` @@ -241,19 +261,23 @@ my-cli/ **Prompts:** ``` -? Choose CLI Type (Use arrow keys) - » utility - interactive + 1 utility + 2 interactive + +Choose CLI Type [1-2]: 1 + + 1 typer + 2 click + 3 argparse -? Choose a framework (Use arrow keys) - » typer - click - argparse +Choose Framework [1-3]: 1 -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -289,10 +313,12 @@ my-automation/ **Prompts:** ``` -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -327,24 +353,28 @@ my-chatbot/ **Prompts:** ``` -? Choose a framework (Use arrow keys) - » pydantic-ai - openai-sdk - litellm + 1 pydantic-ai + 2 openai-sdk + 3 litellm + +Choose Framework [1-3]: 1 + + 1 openai + 2 anthropic + 3 gemini + 4 openrouter + 5 ollama + 6 groq -? Choose a provider (Use arrow keys) - » openai - anthropic - gemini - openrouter - ollama - groq +Choose Provider [1-6]: 1 -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ rich - ○ github-actions + 1 ruff + 2 pytest + 3 rich + 4 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` **Available extras:** `ruff` `pytest` `rich` `github-actions` @@ -379,22 +409,26 @@ my-agent/ **Prompts:** ``` -? Choose a framework (Use arrow keys) - » pydantic-ai - openai-agents + 1 pydantic-ai + 2 openai-agents + +Choose Framework [1-2]: 1 + + 1 openai + 2 anthropic + 3 gemini + 4 openrouter + 5 ollama + 6 groq -? Choose a provider (Use arrow keys) - » openai - anthropic - gemini - openrouter - ollama - groq +Choose Provider [1-6]: 1 -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` > If you pick `openai-agents`, only `openai` and `openrouter` appear as provider choices — the list is filtered per framework. @@ -436,10 +470,12 @@ my-rag/ **Prompts:** ``` -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` RAG System uses a fixed stack — **LlamaIndex + ChromaDB + OpenAI** — so there's no framework or provider prompt, unlike Chatbot and Agent. On first run, it automatically ingests documents from `data/` into a local ChromaDB index, then lets you ask questions against them. Requires an `OPENAI_API_KEY` (used for both the LLM and embeddings). @@ -478,16 +514,19 @@ my-data-project/ **Prompts:** ``` -? Choose Project Type (Use arrow keys) - » Data Analysis - Dashboard - ETL Pipeline - Machine Learning + 1 Data Analysis + 2 Dashboard + 3 ETL Pipeline + 4 Machine Learning -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions +Choose Project Type [1-4]: 1 + + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -530,10 +569,12 @@ my-mcp-server/ **Prompts:** ``` -? Choose extras (space to toggle, enter to confirm) - ● ruff - ● pytest - ○ github-actions + 1 ruff + 2 pytest + 3 github-actions + + Enter numbers separated by commas, or press Enter to skip +Extras []: 1,2 ``` MCP Server uses a fixed stack — the official `mcp` Python SDK's `FastMCP` — so there's no framework or provider prompt, the same as RAG System. @@ -584,11 +625,13 @@ Initialize Git? [Y/n]: Y Initialize uv? [Y/n]: Y Dependencies (comma separated, optional): fastapi, uvicorn -? Optional Setup (space to toggle, enter to confirm) - ● Ruff - ● Pytest - ○ Pre-commit - ○ Dockerfile + Optional Setup + 1 Ruff + 2 Pytest + 3 Pre-commit + 4 Dockerfile + +Enter numbers separated by commas, or press Enter to skip: 1,2 Additional ignore patterns (optional, comma separated): data/, *.csv @@ -693,7 +736,7 @@ Checks span six categories — Documentation, Version Control, Configuration, Te ```bash spawn version -# → Spawn v1.0.5 +# → Spawn v1.0.3 ``` ### Publish to GitHub @@ -725,8 +768,6 @@ All tests should pass. If they don't, please [open an issue](https://github.com/ **Recently shipped** -- Arrow-key menus, no-args banner, and consistent Ctrl+C handling (v1.0.5) -- AGENTS.md / CLAUDE.md generation — every project ships agent context automatically, `--claude-md` opt-in for Claude Code (v1.0.4) - MCP Server intent — official `mcp` SDK, one working tool + resource, stdio transport (v1.0.3) - Non-interactive mode — `--name`/`--template`/flags or `--config` JSON, zero prompts (v1.0.2) - Custom Structure workflow — paste any folder layout, Spawn creates it (v1.0.0) @@ -737,7 +778,7 @@ All tests should pass. If they don't, please [open an issue](https://github.com/ **What's next** -Nothing formally scheduled yet. Ideas under consideration live in [Issues](https://github.com/Abhiix0/spawn/issues); open one if there's something you'd want to see. +A new intent for MCP Server projects, and automatic `AGENTS.md`/`CLAUDE.md` generation for every scaffolded project. Ideas under consideration live in [Issues](https://github.com/Abhiix0/spawn/issues); open one if there's something you'd want to see. For the full version history, see [CHANGELOG.md](docs/changelog.md). diff --git a/uv.lock b/uv.lock index 42f77c4..88c710b 100644 --- a/uv.lock +++ b/uv.lock @@ -165,7 +165,7 @@ wheels = [ ] [[package]] -name = "spawn" +name = "spawnio" version = "1.0.5" source = { editable = "." } dependencies = [ From 214465a5108b8146496b9f12db7431588dd60d4d Mon Sep 17 00:00:00 2001 From: Abhiix0 <24r21a6778@mlrit.ac.in> Date: Sat, 15 Aug 2026 15:15:13 +0530 Subject: [PATCH 2/2] Polish: Readme tweaks for latest --- README.md | 212 +++++++++++++++++++++++++----------------------------- 1 file changed, 96 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index 9b1471b..d5f3874 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,8 @@ It's repetitive. It's inconsistent. And you haven't written a single line of *re | **Dependency installation** | `uv add` runs automatically with the right packages for your choices | | **Git + uv** | Optionally runs `git init`, `uv init`, and `uv venv` | | **Non-interactive mode** | Scaffold with `--name`/`--template`/etc. flags or a `--config` JSON file — zero prompts, safe for scripts and agents | +| **Agent context files** | Every project ships an `AGENTS.md`; add `--claude-md` for an identical `CLAUDE.md` alongside it | +| **Arrow-key menus** | Every prompt in `spawn create` is arrow-key/spacebar driven, not typed numbers | | **GitHub publishing** | Connects your project to an existing GitHub repo and pushes the initial commit | | **spawn doctor** | Scores your project's health out of 100, with per-category breakdowns and a prioritized next step | @@ -139,18 +141,19 @@ Spawn rejects names with spaces or special characters, and tells you immediately **Step 2 — Pick a template** -``` - 1 Backend API - 2 CLI Application - 3 Automation Tool - 4 AI Chatbot - 5 AI Agent - 6 RAG System - 7 Data Project - 8 MCP Server - 9 Custom Structure +Use the arrow keys to move, Enter to select — the same pattern every prompt in Spawn follows. -Choose Template [1-9]: 1 +``` +? Choose a template (Use arrow keys) + » Backend API + CLI Application + Automation Tool + AI Chatbot + AI Agent + RAG System + Data Project + MCP Server + Custom Structure ``` **Step 3 — Additional prompts** *(template-dependent — framework, provider, project type, and/or extras, depending on what you picked. See [Project Templates](#project-templates) below for each one's exact flow.)* @@ -208,19 +211,16 @@ my-api/ **Prompts:** ``` - 1 fastapi - 2 flask - 3 django - -Choose Framework [1-3]: 1 +? Choose a framework (Use arrow keys) + » fastapi + flask + django - 1 ruff - 2 pytest - 3 docker - 4 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ docker + ○ github-actions ``` **Available extras:** `ruff` `pytest` `docker` `github-actions` @@ -261,23 +261,19 @@ my-cli/ **Prompts:** ``` - 1 utility - 2 interactive - -Choose CLI Type [1-2]: 1 +? Choose CLI Type (Use arrow keys) + » utility + interactive - 1 typer - 2 click - 3 argparse +? Choose a framework (Use arrow keys) + » typer + click + argparse -Choose Framework [1-3]: 1 - - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -313,12 +309,10 @@ my-automation/ **Prompts:** ``` - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -353,28 +347,24 @@ my-chatbot/ **Prompts:** ``` - 1 pydantic-ai - 2 openai-sdk - 3 litellm - -Choose Framework [1-3]: 1 - - 1 openai - 2 anthropic - 3 gemini - 4 openrouter - 5 ollama - 6 groq +? Choose a framework (Use arrow keys) + » pydantic-ai + openai-sdk + litellm -Choose Provider [1-6]: 1 +? Choose a provider (Use arrow keys) + » openai + anthropic + gemini + openrouter + ollama + groq - 1 ruff - 2 pytest - 3 rich - 4 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ rich + ○ github-actions ``` **Available extras:** `ruff` `pytest` `rich` `github-actions` @@ -409,26 +399,22 @@ my-agent/ **Prompts:** ``` - 1 pydantic-ai - 2 openai-agents - -Choose Framework [1-2]: 1 - - 1 openai - 2 anthropic - 3 gemini - 4 openrouter - 5 ollama - 6 groq +? Choose a framework (Use arrow keys) + » pydantic-ai + openai-agents -Choose Provider [1-6]: 1 +? Choose a provider (Use arrow keys) + » openai + anthropic + gemini + openrouter + ollama + groq - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` > If you pick `openai-agents`, only `openai` and `openrouter` appear as provider choices — the list is filtered per framework. @@ -470,12 +456,10 @@ my-rag/ **Prompts:** ``` - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` RAG System uses a fixed stack — **LlamaIndex + ChromaDB + OpenAI** — so there's no framework or provider prompt, unlike Chatbot and Agent. On first run, it automatically ingests documents from `data/` into a local ChromaDB index, then lets you ask questions against them. Requires an `OPENAI_API_KEY` (used for both the LLM and embeddings). @@ -514,19 +498,16 @@ my-data-project/ **Prompts:** ``` - 1 Data Analysis - 2 Dashboard - 3 ETL Pipeline - 4 Machine Learning +? Choose Project Type (Use arrow keys) + » Data Analysis + Dashboard + ETL Pipeline + Machine Learning -Choose Project Type [1-4]: 1 - - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` **Available extras:** `ruff` `pytest` `github-actions` @@ -569,12 +550,10 @@ my-mcp-server/ **Prompts:** ``` - 1 ruff - 2 pytest - 3 github-actions - - Enter numbers separated by commas, or press Enter to skip -Extras []: 1,2 +? Choose extras (space to toggle, enter to confirm) + ● ruff + ● pytest + ○ github-actions ``` MCP Server uses a fixed stack — the official `mcp` Python SDK's `FastMCP` — so there's no framework or provider prompt, the same as RAG System. @@ -595,7 +574,7 @@ Then add it to your MCP client's config — see the generated project's own READ ## Bring Your Own Structure -None of the eight templates above fit? **Custom Structure** shows up as the last option in the same `spawn create` picker (`9`) — it's not a separate command, just a different path through the same flow. +None of the eight templates above fit? **Custom Structure** shows up as the last option in the same `spawn create` picker — it's not a separate command, just a different path through the same flow. Paste any of three text formats — Unix `tree` output, a Markdown list, or plain indented hierarchy — and Spawn parses it, previews the detected folders and files, then creates the structure with the same Git and uv setup as every other template. @@ -625,13 +604,11 @@ Initialize Git? [Y/n]: Y Initialize uv? [Y/n]: Y Dependencies (comma separated, optional): fastapi, uvicorn - Optional Setup - 1 Ruff - 2 Pytest - 3 Pre-commit - 4 Dockerfile - -Enter numbers separated by commas, or press Enter to skip: 1,2 +? Optional Setup (space to toggle, enter to confirm) + ● Ruff + ● Pytest + ○ Pre-commit + ○ Dockerfile Additional ignore patterns (optional, comma separated): data/, *.csv @@ -736,7 +713,7 @@ Checks span six categories — Documentation, Version Control, Configuration, Te ```bash spawn version -# → Spawn v1.0.3 +# → Spawn v1.0.5 ``` ### Publish to GitHub @@ -768,6 +745,9 @@ All tests should pass. If they don't, please [open an issue](https://github.com/ **Recently shipped** +- Published to PyPI as `spawnio` — install with `pip install spawnio` (v1.0.5) +- Arrow-key menus, no-args banner, and consistent Ctrl+C handling (v1.0.5) +- AGENTS.md / CLAUDE.md generation — every project ships agent context automatically, `--claude-md` opt-in for Claude Code (v1.0.4) - MCP Server intent — official `mcp` SDK, one working tool + resource, stdio transport (v1.0.3) - Non-interactive mode — `--name`/`--template`/flags or `--config` JSON, zero prompts (v1.0.2) - Custom Structure workflow — paste any folder layout, Spawn creates it (v1.0.0) @@ -778,7 +758,7 @@ All tests should pass. If they don't, please [open an issue](https://github.com/ **What's next** -A new intent for MCP Server projects, and automatic `AGENTS.md`/`CLAUDE.md` generation for every scaffolded project. Ideas under consideration live in [Issues](https://github.com/Abhiix0/spawn/issues); open one if there's something you'd want to see. +Nothing formally scheduled yet. Ideas under consideration live in [Issues](https://github.com/Abhiix0/spawn/issues); open one if there's something you'd want to see. For the full version history, see [CHANGELOG.md](docs/changelog.md).