| name | operately-cli |
| description | Manage Operately from the CLI: goals, OKRs, projects, tasks, milestones, spaces, documents, discussions, check-ins, reviews, assignments, people, permissions, and Docs & Files. Use when operating an Operately workspace, automating startup/company operations, updating project status, tracking goal progress, managing async execution, or working with the open source company operating system.
|
| version | 1.3.0 |
| metadata | {"openclaw":{"requires":{"bins":["operately"]},"env":[{"name":"OPERATELY_API_TOKEN","description":"API token for environment-based Operately CLI authentication.","required":false,"sensitive":true},{"name":"OPERATELY_BASE_URL","description":"Optional Operately API base URL for self-hosted, staging, or local instances.","required":false,"sensitive":false},{"name":"OPERATELY_PROFILE","description":"Optional saved Operately CLI profile name to use.","required":false,"sensitive":false}],"primaryEnv":"OPERATELY_API_TOKEN","emoji":"📋","homepage":"https://github.com/operately/skills","install":[{"kind":"node","package":"@operately/operately-cli","bins":["operately"]}]}} |
Operately CLI
Operate an Operately instance through the operately CLI.
Quick Reference
| Task | Command |
|---|
| Install CLI | npm install -g @operately/operately-cli |
| Login | operately auth login --token <token> |
| Interactive login | operately auth login |
| Login with flags | operately auth login --method email-password --email user@example.com --password secret123456 --company-id <company-id> --access-mode full-access --profile work |
| Sign up | operately auth signup |
| Sign up with flags | operately auth signup --method email-password --full-name "New User" --email newuser@example.com --password secret123456 --next-step later |
| Join Company | operately auth join |
| Join Company with flags | operately auth join --invite-token <token> --method email-password --email user@example.com --password secret123456 |
| Create company | operately auth create-company |
| Create company with flags | operately auth create-company --method email-password --email user@example.com --password secret123456 --company-name "Acme Corp" --profile work |
| List saved profiles | operately auth profiles |
| Auth status (local config) | operately auth status |
| Who am I | operately auth whoami |
| Logout | operately auth logout |
| Set profile picture | operately people update_picture --avatar-file ./avatar.png |
| Remove profile picture | operately people update_picture --clear |
| Upload file to Docs & Files | operately documents create_file --space-id <id> --file ./report.pdf |
| List my assignments | operately people list_assignments |
| List projects | operately projects list |
| Get project | operately projects get --id <id> --include-space |
| Create project | operately projects create --space-id <id> --name "Q2 Roadmap" --anonymous-access-level 0 --company-access-level 10 --space-access-level 70 |
| List goals | operately goals list |
| Create goal | operately goals create --space-id <id> --name "Revenue Goal" --anonymous-access-level 0 --company-access-level 10 --space-access-level 70 |
| List tasks | operately tasks list --project-id <id> |
| Create task | operately tasks create --type project --id <project-id> --name "Design mockups" --milestone-id <id> --assignee-id null --due-date <date> |
| List spaces | operately spaces list |
| Create document | operately documents create_document --space-id <id> --name "Guide" --content "# Guide" |
| List Docs & Files contents | operately documents list_contents --space-id <id> |
Verify CLI Is Installed
Before any CLI operation, confirm the CLI is available:
operately --version
If this does not print the version number, the CLI is not installed. Stop and tell the user:
The Operately CLI is not installed. Install it with npm install -g @operately/operately-cli and then re-run this task.
Do not attempt to install the CLI on behalf of the user. Do not continue without a working CLI.
Only after confirming the binary exists should you verify the session:
operately auth whoami
Interpret failures carefully:
command not found from whoami still means the CLI is missing.
- Authentication or connection errors mean the CLI exists but the current session cannot reach Operately yet. Tell the user the CLI is installed but the session/auth is not working, and ask them to login.
Core Workflow
1. Authenticate
Prefer direct token login for automation, CI, or any non-interactive task. Generate an API token in the Operately UI at Profile → API Tokens, then:
operately auth login --token <your-token>
operately auth whoami
Important: If you don't specify --base-url when logging in, the CLI defaults to https://app.operately.com. For self-hosted or staging environments, always provide the --base-url flag:
operately auth login --token <token> --base-url https://operately.yourcompany.com
operately auth whoami
Auth Flow Rules For Agents
operately auth login --token <token> is the safest path for automation and headless work. It validates the token and saves a profile without using the interactive bootstrap flow.
- If an agent must use
operately auth login without an existing token, prefer passing all known login data as flags so the CLI only asks for the unavoidable manual steps.
- The two unavoidable manual login steps are: Google login browser confirmation, and email-code login verification-code entry from the user's email.
- If an agent must use
operately auth signup, prefer passing all known signup data as flags so the CLI only asks for the unavoidable manual steps.
- The two unavoidable manual signup steps are: Google signup browser confirmation, and email/password signup verification-code entry from the user's email.
- All
operately auth ... commands are handcrafted in cli/src/auth/, with the per-flow modules under cli/src/auth/flows/. They are not generated from backend external_endpoints, even though the rest of the CLI command surface is generated.
- Use interactive auth commands only when a human can answer prompts. For Google flows, also assume a browser is required.
operately auth profiles and operately auth status only report local CLI config state. They do not prove the saved token is valid. Use operately auth whoami when you need remote verification.
- If the task involves choosing between login, signup, join, invite handling, or understanding which backend/internal endpoints the CLI will hit, read
references/auth-flows.md before acting.
Agent-Friendly Login Examples
Prefer these over the fully interactive bootstrap flow when the necessary details are already known:
operately auth login \
--method email-password \
--email user@example.com \
--password secret123456 \
--company-id <company-id> \
--access-mode full-access \
--profile work
operately auth login \
--method email-code \
--email user@example.com \
--company-name "Acme Corp" \
--access-mode read-only
operately auth login \
--method google \
--company-name "Acme Corp" \
--access-mode full-access
Agent-Friendly Signup Examples
Prefer these over the fully interactive signup flow when the necessary details are already known:
operately auth signup \
--method email-password \
--full-name "New User" \
--email newuser@example.com \
--password secret123456 \
--next-step later
operately auth signup \
--method google \
--next-step later
Authentication Options
Three ways to provide authentication:
-
Saved profile (recommended for local use):
operately auth login --token <token>
-
Environment variables (best for CI/scripts):
export OPERATELY_API_TOKEN=op_live_xxx
export OPERATELY_BASE_URL=https://app.operately.com
export OPERATELY_PROFILE=default
-
Per-command flags (temporary overrides):
operately people get_me --token <token> --base-url <url>
Priority: command flags > environment variables > saved profile.
Multiple Environments
Use profiles for different environments:
operately auth login --token op_live_xxx
operately auth login --token op_staging_xxx --profile staging --base-url https://staging.operately.com
operately auth login --token op_local_xxx --profile local --base-url http://localhost:4000
Switch profiles:
operately people get_me --profile staging
operately auth profiles
Interactive Auth Flow Summary
operately auth login is hybrid for password, email-code, and Google login: with no flags it is fully interactive, but any provided login flags suppress the matching prompts. Google login still requires browser confirmation, and email-code login still requires the emailed verification code. If no --method flag is provided, the interactive menu still includes prompted token entry as an option.
operately auth signup is hybrid: with no flags it is fully interactive, but any provided signup flags suppress the matching prompts. Google signup still requires browser confirmation, and email/password signup still requires the emailed verification code.
operately auth create-company is hybrid: with no flags it is fully interactive, but any provided flags suppress the matching prompts. It authenticates with email/password, email code, or Google OAuth, then creates a company and saves a full-access profile.
operately auth join is hybrid: with no flags it is fully interactive, but any provided flags suppress the matching prompts. It starts from an invite token and routes differently for personal invites vs company-wide invites.
- When an interactive flow needs a profile name and
--profile is not provided, the CLI prompts with the current active profile as the default; blank input accepts that default.
- In bootstrap login flows, the CLI usually exchanges a short-lived bootstrap token for a company-scoped API token and then saves the resulting profile.
- The detailed decision tree, prompt behavior, and endpoint mapping live in
references/auth-flows.md.
Method prerequisites — confirm access BEFORE choosing a method:
| Method | Required access |
|---|
--token | The API token itself |
email-password (login) | Email address AND password |
email-password (signup) | Email address AND inbox access (a code is sent during signup) |
email-code | Email address AND inbox access (a code is sent and must be read) |
google | Browser access for the OAuth confirmation step |
- Never choose Google OAuth in headless, CI, or automated contexts — it always requires a human to confirm in the browser.
- Never choose email-code without confirmed inbox access — a code is always sent and must be entered.
- Always pass known values as flags (
--method, --email, --password, --company-name, etc.) to suppress every prompt that can be suppressed. Only leave a step interactive when it is truly unavoidable (browser confirmation or entering an emailed code).
2. Command Structure
Commands follow the API endpoint naming:
operately <namespace> <endpoint_name> [flags]
Examples:
operately people get_me
operately people update_picture --avatar-file path-to-avatar-file
operately projects list
operately goals create --name "Q2 Revenue Goal" --space-id s1
operately tasks update_status --task-id t1 --type project --status.id done --status.label "Done" --status.color green --status.index 2 --status.value done --status.closed true
operately documents create_file --space-id s1 --file path-to-file
3. Input Flags
Flags map to API fields using kebab-case:
Simple values:
operately projects update_name --project-id p1 --name "New Name"
Booleans:
operately projects get --id p1 --include-space
operately projects get --id p1 --include-space=true
Include flags (--include-*)
Include flags request extra related data or expanded result sets in the response. If an include flag is omitted, that data is not returned, but that does not mean the underlying resource does not have it. It means the CLI/API did not preload it.
If the matching include flag was requested and the field is still missing, then treat that as the resource/data not existing for that object.
Examples:
operately projects get --id p1 will return the base project without space, milestones, or contributors.
operately projects get --id p1 --include-space --include-milestones requests those fields explicitly.
operately projects get --id p1 --include-subscription-list is required before using notification subscription commands that need the subscription_list.
When reading CLI help:
- Keep the flat
Input flags: list in mind.
- If help ends with
Include flag behavior:, treat the listed resources as opt-in fields.
- Do not infer “no milestones”, “no contributors”, or similar conclusions just because the field is missing from a response unless the matching include flag was requested.
Nulls:
operately goals update_due_date --goal-id g1 --due-date null
Arrays (repeat the flag):
operately notifications mark_many_as_read --ids n1 --ids n2
Nested objects (dot-index notation):
operately projects update_task_statuses \
--task-statuses.0.id ts1 \
--task-statuses.0.label "To Do" \
--task-statuses.1.id ts2 \
--task-statuses.1.label "Done"
Markdown content:
Many commands accept markdown content (documents, descriptions, check-ins, discussions). For anything beyond a single short sentence, use file input (--<field>-file <path>) instead of inline strings. File input preserves formatting perfectly without shell escaping issues.
Recommended: file input for multiline content
cat > /tmp/description.md << 'EOF'
1. Launch new feature
2. Improve performance
- **May:** Design phase
- **June:** Development
- **July:** Launch
EOF
operately projects update_description \
--project-id p1 \
--description-file /tmp/description.md
cat > /tmp/post.md << 'EOF'
Hey team. Here's the weekly update:
- Shipped the new landing page
- Fixed 3 bugs in check-in flow
- Started work on notifications
Next week we focus on **goal reviews**.
EOF
operately spaces create_discussion \
--space-id s1 \
--title "Weekly Update" \
--body-file /tmp/post.md
# Document creation
operately documents create_document \
--space-id s1 \
--name "API Documentation" \
--content-file ./api-docs.md
File input flag pattern: For any flag that accepts markdown, append -file to use a file path instead:
--body → --body-file <path>
--description → --description-file <path>
--content → --content-file <path>
Inline strings (for short, single-line content only):
operately documents create_document \
--space-id s1 \
--name "Quick Note" \
--content "A short note with **bold** text."
operately projects update_description \
--project-id p1 \
--description "# Title\n\nOne paragraph."
Binary file uploads:
Some commands accept a real local file path and upload the bytes, not just markdown content:
operately people update_picture --avatar-file ./avatar.png
operately people update_picture --clear
operately documents create_file \
--space-id s1 \
--file ./quarterly-report.pdf
operately documents create_file \
--space-id s1 \
--folder-id f1 \
--file ./quarterly-report.pdf \
--name "Quarterly Report" \
--description-file ./quarterly-report.md
Rules for file inputs:
people update_picture accepts --avatar-file <path> to upload or --clear to remove the current picture.
documents create_file accepts exactly one --file <path> per command.
documents create_file --name overrides the base filename while preserving the source extension.
--description-file <path> still means "load markdown from disk"; the uploaded binary stays on --file <path>.
- Do not try to create blobs manually first. These commands already handle blob creation, upload, preview generation, and finalization.
Supported markdown:
- Headings:
# H1, ## H2, ### H3
- Bold:
**text**, Italic: *text*
- Lists:
- item or 1. item
- Links:
[text](url)
- Code:
`inline` or ```block```
- Line breaks:
\n (inline only; files handle this naturally)
Access Levels:
Many create commands require access level parameters to control who can view and interact with resources:
--anonymous-access-level - Access for non-authenticated users (not supported yet, always use 0)
--company-access-level - Access for company members
--space-access-level - Access for space members
Access level values:
0 - No access
10 - View only
40 - Comment
70 - Edit
100 - Full access
Common pattern for team resources:
--anonymous-access-level 0 \
--company-access-level 10 \
--space-access-level 70
Note: Get commands use generic --id parameter, while create/update commands use entity-specific IDs like --project-id, --goal-id, etc.
4. Output Options
operately people get_me
operately people get_me --compact
operately projects get --id p1 --output ./project.json
operately people get_me --verbose
Available Namespaces
The CLI provides access to the external API across these namespaces:
- comments - Comment management on resources
- companies - Company settings, members, permissions
- documents - Docs & Files: documents, files, links, folders (list, create, get, update, delete, publish, copy, move)
- goals - Goal management, check-ins, targets
- notifications - Notification preferences and subscriptions
- people - User and team member management, including profile picture updates
- projects - Project management, milestones, check-ins
- reactions - Emoji reactions to content
- spaces - Space (team/department) management
- tasks - Task management across projects
Assignments and Reviews
Get all items requiring your attention or review with a single command:
operately people list_assignments
This returns assignments categorized into three groups:
due_soon - Items you own that are overdue, due today, or due soon
needs_review - Items where you are the reviewer (check-ins, goal updates) awaiting acknowledgment
upcoming - Items you own with future due dates
Each category contains groups of assignments organized by their origin (project, goal, or space). Assignments include:
- Milestones - Project milestones you own
- Tasks - Project and space tasks assigned to you
- Projects - Projects you own or are reviewing
- Goals - Goals you own or are reviewing
- Check-ins - Project and goal check-ins requiring your review
The response structure groups related items together and sorts by urgency, making it easy to prioritize your work. Items needing review show the author's name and what action is required.
See: references/assignments-and-reviews.md for detailed examples, filtering techniques, and integration workflows.
Projects
Create Project
operately projects create \
--space-id s1 \
--name "Q2 Product Roadmap" \
--anonymous-access-level 0 \
--company-access-level 10 \
--space-access-level 70
Get Project
operately projects get \
--id p1 \
--include-space \
--include-milestones
If you omit --include-space or --include-milestones, those fields will be absent from the response even when the project has a space or milestones. Missing included data usually means “not preloaded,” not “does not exist.”
Update Project
operately projects update_name --project-id p1 --name "Q2 Roadmap"
operately projects update_description --project-id p1 --description "# Overview\n\nQ2 goals..."
operately projects update_due_date --project-id p1 --due-date 2024-06-30
Milestones
operately projects create_milestone \
--project-id p1 \
--name "Launch" \
--due-date 2024-06-30
operately projects list_milestones --project-id p1
operately projects update_milestone_title \
--milestone-id m1 \
--title "Public Launch"
operately projects update_milestone_due_date \
--milestone-id m1 \
--due-date 2024-07-15
Project Check-ins
operately projects create_check_in \
--project-id p1 \
--status on_track \
--description "# Progress\n\nCompleted design phase."
operately projects list_check_ins --project-id p1
operately projects acknowledge_check_in --id ci1
Contributors
operately projects create_contributor \
--project-id p1 \
--person-id u1 \
--responsibility "Design lead" \
--permissions edit_access \
--role reviewer
operately projects list_contributors --project-id p1
operately projects update_contributor \
--contrib-id c1 \
--responsibility "Lead designer and UX researcher"
Goals
Create Goal
operately goals create \
--space-id s1 \
--name "Q2 Revenue Goal" \
--champion-id u1 \
--reviewer-id u2 \
--anonymous-access-level 0 \
--company-access-level 10 \
--space-access-level 70
Goal Hierarchy
operately goals create \
--space-id s1 \
--name "Increase MRR" \
--parent-goal-id g1 \
--anonymous-access-level 0 \
--company-access-level 10 \
--space-access-level 70
operately goals update_parent_goal \
--goal-id g2 \
--parent-goal-id g1
operately goals search_parent_goal --query "Revenue" --goal-id g1
Targets
operately goals create_target \
--goal-id g1 \
--name "Monthly Revenue" \
--start-value 50000 \
--target-value 100000 \
--unit "USD"
operately goals update_target_value \
--goal-id g1 \
--target-id t1 \
--value 75000
Goal Check-ins
operately goals create_check_in \
--goal-id g1 \
--status on_track \
--due-date 2026-04-01 \
--content "Making good progress on Q2 targets"
operately goals list_check_ins --goal-id g1
operately goals acknowledge_check_in --id ci1
Goal Lifecycle
operately goals close \
--goal-id g1 \
--success achieved \
--success-status achieved \
--retrospective "# Retrospective\n\nWe exceeded our target."
operately goals reopen --id g1 --message "Reopening after new planning input."
Tasks
Create Task
operately tasks create \
--type project \
--id p1 \
--milestone-id m1 \
--name "Design mockups" \
--assignee-id u1 \
--due-date 2024-06-15
Note: Tasks require --type ("project" or "space") and --id (project or space ID) parameters.
List Tasks
operately tasks list --project-id p1
Update Task
operately tasks update_status --task-id t1 --type project --status.id done --status.label "Done" --status.color green --status.index 2 --status.value done --status.closed true
operately tasks update_assignee --task-id t1 --type project --assignee-id u2
operately tasks update_due_date --task-id t1 --type project --due-date 2024-06-20
operately tasks update_description \
--task-id t1 \
--type project \
--description "# Task Details\n\nCreate high-fidelity mockups."
Move Task
operately tasks update_milestone --task-id t1 --milestone-id m2
operately tasks update_milestone_and_ordering \
--task-id t1 \
--milestone-id m2 \
--milestones-ordering-state.0.milestone-id m2 \
--milestones-ordering-state.0.ordering-state.0 t1
Spaces
Create Space
operately spaces create \
--name "Engineering" \
--mission "Build great products" \
--company-permissions 10 \
--public-permissions 0
Manage Members
operately spaces add_members \
--space-id s1 \
--members.0.id u1 \
--members.0.access-level 70 \
--members.1.id u2 \
--members.1.access-level 40
operately spaces list_members --space-id s1
operately spaces delete_member --space-id s1 --member-id u1
operately spaces update_members_permissions \
--space-id s1 \
--members.0.id u1 \
--members.0.access-level 70
Space Tools
operately spaces list_tools --space-id s1
operately spaces update_tools \
--space-id s1 \
--tools.tasks-enabled true \
--tools.discussions-enabled true \
--tools.resource-hub-enabled true
Docs & Files
See Docs & Files Reference for detailed workflows.
Every space and project has a Docs & Files hub. Scope hub-level commands with --space-id or --project-id (mutually exclusive). Do not look up a hub ID via spaces list_tools — pass the space or project ID directly.
For folder-scoped listing, --folder-id alone is enough (no space/project ID required).
Folder Management
operately documents create_folder \
--space-id s1 \
--name "Guides"
operately documents create_folder \
--space-id s1 \
--folder-id f1 \
--name "Onboarding"
operately documents rename_folder \
--folder-id f1 \
--new-name "Team Guides"
operately documents update_parent_folder \
--resource-id f2 \
--resource-type "folder" \
--new-folder-id f1
Documents
operately documents create_document \
--space-id s1 \
--name "Getting Started" \
--content "# Getting Started\n\nWelcome to the team."
operately documents create_document \
--space-id s1 \
--folder-id f1 \
--name "Onboarding Guide" \
--content "# Onboarding\n\nFirst steps..."
operately documents update_document \
--document-id d1 \
--name "Updated Guide" \
--content "# Updated Content"
operately documents publish_document --document-id d1
Links
operately documents create_link \
--space-id s1 \
--name "Company Handbook" \
--url "https://handbook.example.com" \
--type "other"
operately documents create_link \
--space-id s1 \
--folder-id f1 \
--name "Design System" \
--url "https://design.example.com" \
--type "other" \
--description "Our design system documentation"
File Uploads
operately documents create_file \
--space-id s1 \
--file ./report.pdf
operately documents create_file \
--project-id p1 \
--folder-id f1 \
--file ./spec.pdf \
--name "Product Spec"
List Contents
operately documents list_contents --space-id s1
operately documents list_contents --folder-id f1
operately documents list_contents \
--space-id s1 \
--include-comments-count \
--include-children-count
Discussions
Create Discussion
operately spaces create_discussion \
--space-id s1 \
--title "Q2 Planning" \
--body "# Q2 Planning\n\nLet's discuss priorities."
operately spaces create_discussion \
--space-id s1 \
--title "Q2 Planning" \
--body-file ./q2-planning.md
operately projects create_discussion \
--project-id p1 \
--title "Architecture Review" \
--message "# Architecture\n\nProposed changes..."
operately goals create_discussion \
--goal-id g1 \
--title "Target Adjustment" \
--message "Should we revise our targets?"
List Discussions
operately spaces list_discussions --space-id s1
operately projects list_discussions --project-id p1
operately goals list_discussions --goal-id g1
Comments
operately comments create \
--entity-id e1 \
--entity-type "project_check_in" \
--content "Great progress!"
operately comments list --entity-id e1 --entity-type "project_check_in"
operately comments update --comment-id c1 --parent-type project_check_in --content "Updated comment"
operately comments delete --comment-id c1 --parent-type project_check_in
Notifications
operately notifications list
operately notifications get_unread_count
operately notifications mark_as_read --id n1
operately notifications mark_many_as_read \
--ids n1 \
--ids n2
operately notifications mark_all_as_read
operately notifications is_subscribed \
--resource-id r1 \
--resource-type project
operately projects get \
--id r1 \
--include-subscription-list
operately notifications subscribe \
--subscription-list-id <subscription-list-id> \
--type project
operately notifications unsubscribe \
--subscription-list-id <subscription-list-id>
If subscription_list is missing from the projects get response, do not assume the project lacks one. It means --include-subscription-list was omitted and the field was not preloaded.
People
operately people get_me
operately people get --id u1
operately people list
operately people search --query "john"
operately people update \
--id u1 \
--title "Senior Engineer" \
--manager-id u2
operately people update_picture --avatar-file ./avatar.png
operately people update_picture --clear
Company
operately companies get
operately companies list
operately companies get_work_map
operately companies global_search --query "roadmap"
operately companies create_member \
--full-name "John Doe" \
--email "john@example.com" \
--title "Engineer"
Help System
The CLI provides built-in help at three levels:
Namespace-level help - List all commands in a namespace:
operately <namespace>
operately <namespace> --help
Examples:
operately projects
operately goals --help
Both forms display all available commands within that namespace.
Command-level help - Show command description and parameters:
operately <namespace> <command> --help
Examples:
operately projects create --help
operately goals update_target_value --help
This displays:
- Command description
- All required parameters (marked with
(required))
- All optional parameters
- Parameter types and formats
Auth command help - Show all flags, validation rules, and examples for any auth subcommand:
operately auth <command> --help
operately help auth <command>
Examples:
operately auth login --help
operately auth join --help
operately auth create-company --help
operately auth signup --help
This displays the full flag list, accepted method aliases, validation rules, and copy-paste examples for that specific auth command. Always run this before executing an auth command when uncertain about available flags or their constraints.
Auth overview help - List all auth subcommands:
operately auth
operately help auth
General help:
operately help
Exit Codes
0 - Success
1 - Auth precondition not met (e.g., logout attempted when not logged in)
2 - CLI usage/validation error
3 - Missing authentication token/config
4 - API 4xx error (client error)
5 - API 5xx/network/fatal error (server error)
Troubleshooting
Authentication Failures
Check authentication setup:
operately auth profiles
operately auth status
operately auth whoami
Interpret them differently:
operately auth profiles lists saved local profiles, marks the active one, and shows saved metadata/base URLs.
operately auth status checks whether the CLI has local profile/token config.
operately auth whoami checks whether the current token actually works against the target Operately instance.
If token is invalid or expired, login again:
operately auth login --token <new-token>
Command Not Found
Verify CLI is installed:
command -v operately
npm list -g @operately/operately-cli
Update to latest version:
npm update -g @operately/operately-cli
operately --version
API Errors
Use verbose mode to see request details:
operately projects get --id p1 --verbose
Check the API response for specific error messages.
Missing Required Fields
Use help to see required flags:
operately help projects create
Required fields are marked with (required) in the help output.
When to Use Other Skills
This is the primary skill for Operately CLI operations. Future skills may include:
- operately-automation - CI/CD integration patterns
- operately-reporting - Analytics and reporting workflows
References