Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Scaffold fully-wired Python projects (tests, CI, pre-commit, license) from templates, with a TUI.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Scaffold a new, fully-wired Python project in seconds — with a friendly terminal UI.
scaffld generates a clean project skeleton (src layout, tests, typed code, CI,
pre-commit, license, and an optional virtualenv) from extensible templates. No
cookiecutter YAML to memorize, no {% raw %} gymnastics to keep GitHub Actions
files intact — just answer a few prompts and start writing code.檢視完整 README ↗English · Español: README.es.md
Scaffold a new, fully-wired Python project in seconds — with a friendly terminal UI.
scaffld generates a clean project skeleton (src layout, tests, typed code, CI,
pre-commit, license, and an optional virtualenv) from extensible templates. No
cookiecutter YAML to memorize, no {% raw %} gymnastics to keep GitHub Actions
files intact — just answer a few prompts and start writing code.
pip install scaffld
scaffld new
pyproject.toml, a src/ layout,
pytest tests that pass out of the box, a GitHub Actions matrix CI, a
.pre-commit-config.yaml, a real LICENSE, and a sensible .gitignore.python-lib, python-cli, and python-api (FastAPI).${{ ... }}
expressions untouched, so your workflow files render correctly with zero escaping.~/.scaffld/templates and it shows
up instantly. Templates are just a template.toml plus a files/ tree.--no-input makes scaffld behave in CI and Makefiles..venv for the new project.pip install scaffld
# or, from a clone:
pip install -e ".[dev]"
scaffld is on PyPI, so pip install scaffld works. Installing from a clone
instead needs git on your machine.
Requires Python 3.9+. Runtime dependencies: typer and rich (plus tomli on 3.9/3.10).
List the available templates:
$ scaffld list
Available templates
┏━━━┳━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ # ┃ Template ┃ Kind ┃ Description ┃
┡━━━╇━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ python-api │ api │ FastAPI service with a health route, typed │
│ │ │ │ handlers, and CI. │
│ 2 │ python-cli │ cli │ Zero-dependency argparse CLI with a │
│ │ │ │ console-script entry point. │
│ 3 │ python-lib │ library │ Importable Python library: src/ layout, typed │
│ │ │ │ API, tests, and CI. │
└───┴────────────┴─────────┴───────────────────────────────────────────────────┘
Create a project. Run scaffld new with no arguments for the full interactive flow,
or pass flags to skip the prompts:
$ scaffld new "Weather Bot" -t python-cli -a "Ada Lovelace" -d "A tiny weather CLI." --no-input --no-venv
weather-bot/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .pre-commit-config.yaml
├── LICENSE
├── README.md
├── pyproject.toml
├── src/
│ └── weather_bot/
│ ├── __init__.py
│ └── cli.py
└── tests/
└── test_cli.py
╭──────────────────────────────────── Done ────────────────────────────────────╮
│ Created 9 files in /tmp/weather-bot │
╰──────────────────────────────────────────────────────────────────────────────╯
Next steps:
cd weather-bot
pip install -e ".[dev]"
pytest
scaffld show python-lib prints the file tree a template would generate, without
writing anything to disk.
The generated project is real and works immediately:
$ cd weather-bot && pip install -e ".[dev]" && pytest -q
... [100%]
3 passed in 0.01s
$ weather-bot Fernando
Hello, Fernando!
| Flag | Meaning |
|---|---|
-t, --type | Template to use (scaffld list). |
-a, --author | Author name (defaults to SCAFFLD_AUTHOR, then git config user.name, then $USER). |
--email | Author email (defaults to SCAFFLD_EMAIL, then git config user.email). |
-d, --description | One-line project description. |
-l, --license | MIT, BSD-3-Clause, ISC, or none. |
-o, --output | Directory to create the project in (defaults to the current directory). |
--python | Minimum Python version for the generated project (3.N or 3.N.P). |
--venv / --no-venv | Create a .venv in the new project. On by default. |
--no-input | Never prompt — fail if a required value is missing (great for CI). |
--force | Write into a non-empty directory. |
scaffld -V (or --version) prints the version and exits.
A template is just a directory:
my-template/
├── template.toml # name, kind, description
└── files/ # the tree that gets rendered
├── pyproject.toml
├── src/{{ package_name }}/__init__.py
└── ...
Both file contents and path segments are rendered, so a directory literally named
{{ package_name }} becomes weather_bot/ on disk.
The rendering engine is deliberately small and has one property that matters for real
projects: unknown {{ ... }} expressions are left untouched. That means a GitHub
Actions file can contain ${{ matrix.python-version }} right next to a scaffld variable
like {{ project_name }}, and only the latter is substituted — no escaping required. It
also supports filters ({{ project_name | snake }}) and nestable conditionals
({% if has_license %}...{% endif %}).
Derived variables are computed once and kept consistent: give it "Weather Bot" and you
get package_name = weather_bot, project_slug = weather-bot, a filled-in license, the
year, and more. Names are transliterated to ASCII first, so "Café Búho" yields
cafe_buho rather than a shredded caf_b_ho, and a name that collides with a Python
keyword gets a trailing underscore (class → class_) so the package stays importable.
Point scaffld at your own templates by dropping them in ~/.scaffld/templates/
(or any directory listed in the SCAFFLD_TEMPLATES environment variable). A user
template that shares a name with a built-in one shadows it, so you can override the
defaults. Available variables include project_name, package_name, project_slug,
author, author_email, description, license, python_version, and year.
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
scaffld is one of a family of small, focused open-source tools I build and maintain. If it saved you some project-setup time, a few of the sibling projects tackle neighbouring problems in the same practical, batteries-included spirit.
By ferinazumaDEV.
MIT — see LICENSE.
Built by Fernando (@ferinazumaDEV).