agentsclimarketplace

New python project

Skill zhengbingquant/frontier-skills/skills/new-python-project

Make any coding agent work like a frontier model. Drop-in Agent Skills for disciplined planning, evidence-first debugging, and live-system safety — plus a Python project scaffold with an agent contract, review checklist, and definition of done. Model-agnostic, zero dependencies.

Install
npx -y skills add zhengbingquant/frontier-skills --skill new-python-project

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Bootstrap a new Python project from a proven scaffold. Use whenever the user asks to start, create, scaffold, or set up a new Python tool, library, CLI, package, service, or experiment repo — or says 'set up a project the usual way'. Do NOT hand-roll a project structure from memory when this skill is available: run its script instead. Produces a src-layout package with pyproject.toml, tests, Makefile, an agent contract (AGENTS.md + CLAUDE.md), operating docs, a review checklist, and a definition of done — a project any agent or human can pick up cold.

SKILL.md

7.1 KB, as published. Nobody here has run it

New Python Project

This skill instantiates the scaffold stored in assets/template/. The scaffold's guarantees: a fresh generation installs cleanly, passes make test, and answers --help before any feature code is written. Do not improvise a different layout when this skill applies.

1. When to use / when not

  • Use: any brand-new Python repo — tool, library, CLI, service skeleton, experiment that may outlive the week.
  • Do not use: adding code to an existing project (respect its existing layout instead), or a non-Python project (you may still copy the conventions in assets/OPERATING_MANUAL.md, which are language-agnostic; only the template itself is Python).

2. Gather the three inputs

Derive these without asking, unless the rules below force a question:

  1. project_name — kebab-case, from the user's own words for the thing (e.g. "a log deduplicator" → log-deduplicator). Strip filler words. Rules: lowercase letters, digits, hyphens only; must not collide with an existing directory at the target location.
  2. package_nameproject_name with hyphens replaced by underscores. Must be a valid Python identifier: if it starts with a digit or clashes with a stdlib module name you know (e.g. json, test), prefix or reword it, and note the choice.
  3. description — one sentence, taken from the user's request. If the request contains no describable purpose, use a neutral one-liner and flag in your report that the description is a placeholder.

Only ask the user if the project's purpose is genuinely unknowable from the request — never ask about naming mechanics.

3. Choose the target directory

SituationTarget
User named a paththat path
Current directory is empty or clearly meant to become the projectcurrent directory
Otherwisea new sibling directory named <project_name> under the user's usual projects location (default: home or current directory)

Never generate inside another project's source tree.

4. Generate

python3 <this-skill>/scripts/new_project.py TARGET_DIR \
    --name PROJECT_NAME --description "ONE SENTENCE" [--package PACKAGE_NAME]

The script is stdlib-only. It refuses to write into a non-empty directory, replaces all placeholders, copies the review checklist and definition of done into docs/, and fails loudly if any placeholder survives. Trust its exit code: nonzero means the generation is unusable — read its message, fix the input, rerun.

If the target is non-empty and the script refuses: NEVER delete or overwrite the existing content to force it. Generate into a fresh temporary sibling directory instead, show the user what exists in their target versus what the scaffold provides, and move files in only after they choose how to merge.

5. Prove the scaffold before building on it (mandatory)

Run, in order, inside the new project:

make setup       # creates .venv and installs the package + dev tools
make test        # must end in "passed"
make run         # prints the CLI help

If any step fails, fix the environment or report — do not start feature work on an unproven skeleton. Record the passing output; it is the baseline for all later work.

If make is unavailable (e.g. bare Windows), run the underlying commands — they are what the Makefile targets contain:

TargetRaw commands
setuppython3 -m venv .venv then .venv/bin/pip install -e ".[dev]" (Windows: .venv\Scripts\pip)
test.venv/bin/python -m pytest
lint.venv/bin/python -m ruff check src tests
run.venv/bin/python -m <package_name>.cli --help

Git: initialize a repository only if the user wants one, and follow the user's stated git conventions. Default: do not commit or push unless asked.

6. Customization decision rules

Apply immediately after generation, before feature work:

Project kindDo this
No CLI needed (pure library)delete src/<pkg>/cli.py and src/<pkg>/__main__.py, remove the [project.scripts] table from pyproject.toml, delete test_cli_* and test_python_dash_m_* tests in tests/test_smoke.py, remove the run target's help note in AGENTS.md
Web serviceadd the framework to [project] dependencies; keep src layout; the app factory lives in src/<pkg>/; document run commands in docs/OPERATING.md and the Makefile run target
Data / research workadd a notebooks/ directory; importable logic still goes in src/<pkg>/, never only in notebooks
Needs configprefer a documented config/ file or env vars read in ONE module; document every variable in docs/OPERATING.md

After customizing, rerun make test — the skeleton must stay green.

7. First feature

Build the first real feature under the plan-and-verify skill if it is available. The scaffold's AGENTS.md tells future agents the same.

8. What each generated file is for

FilePurposeEdit when
README.mdhuman-first overview with an explicit "what this does not provide" boundary sectionevery user-visible change
AGENTS.mdthe agent contract: commands, conventions, definition of donecommands or conventions change
CLAUDE.mdone-line pointer importing AGENTS.mdnever (keep as pointer)
pyproject.tomlmetadata, deps, pytest/ruff configdeps or tooling change
Makefilesetup / test / lint / format / runnew routine commands
src/<pkg>/all importable codealways
src/<pkg>/__main__.pyenables python -m <pkg>never (keep as thin wrapper over cli.main)
tests/hermetic tests (no network, no real endpoints, no sleeps)every behavior change
docs/OPERATING.mdhow to run and operate this specific projectoperational behavior changes
docs/DECISIONS.mddated log of decisions that are not obvious from codeevery non-obvious decision
docs/REVIEW_CHECKLIST.mdpre-merge checklist (copied from scaffold)team conventions evolve
docs/DEFINITION_OF_DONE.mdwhat "done" means here (copied from scaffold)team conventions evolve

Files in this skill

  • scripts/new_project.py — the generator (stdlib-only).
  • assets/template/ — the scaffold source tree with {{placeholders}}.
  • assets/OPERATING_MANUAL.md — language-agnostic conventions the scaffold implements; read it when adapting these ideas outside Python.
  • assets/REVIEW_CHECKLIST.md, assets/DEFINITION_OF_DONE.md — copied into each generated project's docs/.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.