diff --git a/content/pages/docs/cli/manual/zoo.md b/content/pages/docs/cli/manual/zoo.md
index 9741de26..38a03f32 100644
--- a/content/pages/docs/cli/manual/zoo.md
+++ b/content/pages/docs/cli/manual/zoo.md
@@ -20,6 +20,7 @@ Work seamlessly with Zoo from the command line
* [zoo generate](./zoo_generate)
* [zoo kcl](./zoo_kcl)
* [zoo ml](./zoo_ml)
+* [zoo project](./zoo_project)
* [zoo say](./zoo_say)
* [zoo start-session](./zoo_start-session)
* [zoo open](./zoo_open)
diff --git a/content/pages/docs/cli/manual/zoo_project.md b/content/pages/docs/cli/manual/zoo_project.md
new file mode 100644
index 00000000..edf17b4c
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project.md
@@ -0,0 +1,31 @@
+---
+title: "zoo project"
+excerpt: "Manage Zoo projects."
+layout: manual
+---
+
+Manage Zoo projects.
+
+### Subcommands
+
+* [zoo project categories](./zoo_project_categories)
+* [zoo project delete](./zoo_project_delete)
+* [zoo project download](./zoo_project_download)
+* [zoo project list](./zoo_project_list)
+* [zoo project publish](./zoo_project_publish)
+* [zoo project view](./zoo_project_view)
+* [zoo project upload](./zoo_project_upload)
+
+### Options
+
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
diff --git a/content/pages/docs/cli/manual/zoo_project_categories.md b/content/pages/docs/cli/manual/zoo_project_categories.md
new file mode 100644
index 00000000..41a0ab85
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_categories.md
@@ -0,0 +1,28 @@
+---
+title: "zoo project categories"
+excerpt: "List the active project categories available for submission."
+layout: manual
+---
+
+List the active project categories available for submission.
+
+### Options
+
+
+ -f/--format
+ - Command output format
Possible values: json | yaml | table
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_delete.md b/content/pages/docs/cli/manual/zoo_project_delete.md
new file mode 100644
index 00000000..6a9bea74
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_delete.md
@@ -0,0 +1,30 @@
+---
+title: "zoo project delete"
+excerpt: "Delete one of your uploaded projects."
+layout: manual
+---
+
+Delete one of your uploaded projects.
+
+### Options
+
+
+ id-or-path
+ - The project id, or a local project directory, `.kcl` file, or `project.toml`.
+
+When a local path is provided, the persisted Zoo cloud project id will be removed from `project.toml` after the remote project is deleted.
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help (see a summary with '-h')
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_download.md b/content/pages/docs/cli/manual/zoo_project_download.md
new file mode 100644
index 00000000..c71f63b4
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_download.md
@@ -0,0 +1,34 @@
+---
+title: "zoo project download"
+excerpt: "Download one of your projects into a local directory."
+layout: manual
+---
+
+Download one of your projects into a local directory.
+
+### Options
+
+
+ id
+ - The project id
+
+ output-dir
+ - The directory to extract the project into
Default value: .
+
+ --force
+ - Allow extracting into a non-empty destination, overwriting existing files in place
Default value: false
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_list.md b/content/pages/docs/cli/manual/zoo_project_list.md
new file mode 100644
index 00000000..12f0b961
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_list.md
@@ -0,0 +1,28 @@
+---
+title: "zoo project list"
+excerpt: "List your projects."
+layout: manual
+---
+
+List your projects.
+
+### Options
+
+
+ -f/--format
+ - Command output format
Possible values: json | yaml | table
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_publish.md b/content/pages/docs/cli/manual/zoo_project_publish.md
new file mode 100644
index 00000000..3bd3f1f9
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_publish.md
@@ -0,0 +1,31 @@
+---
+title: "zoo project publish"
+excerpt: "Submit an existing cloud project for publication review."
+layout: manual
+---
+
+Submit an existing cloud project for publication review.
+
+### Options
+
+
+ id-or-path
+ - The project id, or a local project directory, `.kcl` file, or `project.toml`
+
+ -f/--format
+ - Command output format
Possible values: json | yaml | table
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_upload.md b/content/pages/docs/cli/manual/zoo_project_upload.md
new file mode 100644
index 00000000..eba6b748
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_upload.md
@@ -0,0 +1,48 @@
+---
+title: "zoo project upload"
+excerpt: "Upload a local project."
+layout: manual
+---
+
+Upload a local project.
+
+### Options
+
+
+ input
+ - The project directory, a `.kcl` file within it, or `project.toml`
Default value: .
+
+ --new
+ - Always create a new remote project even if one is already persisted locally
Default value: false
+
+ --id
+ - Override the persisted Zoo cloud project id from `project.toml`
+
+ --title
+ - Title to use for the cloud project. Defaults to the local project directory name
+
+ --description
+ - Description to use for the cloud project. Defaults to the existing remote description when updating
+
+ -f/--format
+ - Command output format
Possible values: json | yaml | table
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help (see a summary with '-h')
+
+
+
+### About
+
+If the local `project.toml` already contains a Zoo cloud project id, this
+will update that project unless `--new` is passed.
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_project_view.md b/content/pages/docs/cli/manual/zoo_project_view.md
new file mode 100644
index 00000000..cfe3cd0d
--- /dev/null
+++ b/content/pages/docs/cli/manual/zoo_project_view.md
@@ -0,0 +1,31 @@
+---
+title: "zoo project view"
+excerpt: "View one of your projects."
+layout: manual
+---
+
+View one of your projects.
+
+### Options
+
+
+ id-or-path
+ - The project id, or a local project directory, `.kcl` file, or `project.toml`
+
+ -f/--format
+ - Command output format
Possible values: json | yaml | table
+
+ -d/--debug
+ - Print debug info
Default value: false
+
+ --host
+ - Zoo API host to use for all commands (e.g., "api.zoo.dev" or "http://localhost:8888"). Overrides the configured default host
+
+ -h/--help
+ - Print help
+
+
+
+### See also
+
+* [zoo project](./zoo_project)
\ No newline at end of file
diff --git a/content/pages/docs/cli/manual/zoo_user_edit.md b/content/pages/docs/cli/manual/zoo_user_edit.md
index b5430a19..ede0c6cb 100644
--- a/content/pages/docs/cli/manual/zoo_user_edit.md
+++ b/content/pages/docs/cli/manual/zoo_user_edit.md
@@ -33,6 +33,9 @@ Edit user settings.
-p/--phone
The user's phone number
Default value:
+ -u/--username
+ Public username/handle for community-facing features. Empty clears it
+
-d/--debug
Print debug info
Default value: false