Skip to content

Your first project

This walks the full loop: create, work, publish, and get it back on another machine. It is the loop PolyForge exists for.

Terminal window
polyforge create Python wall-extraction

This creates Workspace/Python/wall-extraction/ from the built-in starters.

Terminal window
cd Workspace/Python/wall-extraction

The toolchain is already resolved here: the conf.d fragments cascade down from the workspace root, and Workspace/Python/mise.toml can override versions or add tasks for Python specifically.

If a tool is declared but not installed yet:

Terminal window
polyforge install

Once it is worth keeping, give it its own repository:

Terminal window
polyforge publish

Run from inside the project directory. This:

  • creates the GitHub repository (via gh, so you must be logged in),
  • pushes the project,
  • writes an entry into polyforge.registry.toml:
polyforge.registry.toml
[portfolio.wall-extraction]
repo = "git@github.com:youruser/wall-extraction.git"
lang = "Python"

Commit that registry change to the PolyForge repository. The registry is the map — without it, a fresh clone does not know your project exists.

On a new machine, after cloning PolyForge and running activate:

Terminal window
polyforge get all # every registered project
polyforge get wall-extraction # or just this one

get needs only git — no GitHub CLI. If the project already exists locally, get runs git pull instead of cloning.

  1. polyforge create LANG NAME — scaffold
  2. Work, commit locally
  3. polyforge publish — own repo + registry entry
  4. Commit polyforge.registry.toml
  5. On any machine: polyforge get all

Why the project is not in the PolyForge repo

Section titled “Why the project is not in the PolyForge repo”

Workspace/*/*/ is git-ignored. The tooling repository holds configuration and scaffolding only, so cloning it on a new machine never drags years of code with it. Read the reasoning in content separation.