# Project

> Organize workflows, apps, skills, and shared files into projects. Sharing a project shares everything in it.

Source: https://docs.generalinput.com/cli/project



A project is a folder with grants. A workflow, app, or skill lives in at most one project (or at the workspace root), and anyone with access to the project gets that access to what it holds. A project also carries **shared files**: human-provided reference material that every chat in the project mounts read-only at `project/`.

* [`geni project list`](/cli/project/list) lists the projects you can access. Bare `geni project` does the same.
* [`geni project get`](/cli/project/get) shows one project and what it holds.
* [`geni project create`](/cli/project/create) and [`update`](/cli/project/update) manage the project itself.
* [`geni project pin`](/cli/project/pin) moves a resource you own into a project; `unpin` takes it out.
* [`geni project delete`](/cli/project/delete) deletes a project you own. There is no undo.
* [`geni project files`](/cli/project/files) lists, pulls, pushes, and removes shared files.

Every command takes the project id (`proj_…`). The alias `geni projects` works too.

## Roles [#roles]

Your role in a project is `owner`, `editor`, or `viewer`, resolved from the nearest grant. Reading needs any role; changing the project, pinning into it, and pushing files need edit; deleting needs ownership. A resource-level grant beats the project's, so "editor on the project, viewer on one workflow" is a real state.
