OpenProject
Quick start
- If this skill is installed under DeepAgents, replace
~/.cline/skillsin the examples below with~/.deepagents/agent/skills. - Require
OPENPROJECT_BASE_URLandOPENPROJECT_API_KEYbefore calling the API. - Use the bundled helper at
$HOME/.cline/skills/openproject/scripts/openproject_api.pyfor OpenProject access. - Accept
OPENPROJECT_BASE_URLas either the instance root or the/api/v3root. The helper normalizes both forms. - Authentication uses Basic auth with
apikey:<OPENPROJECT_API_KEY>encoded as Base64. - Read first. If the user asks for a mutation, inspect the target resource before writing.
Example:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" whoami
Environment examples:
$env:OPENPROJECT_BASE_URL="https://example.test/openproject"
$env:OPENPROJECT_API_KEY="your-api-key"
export OPENPROJECT_BASE_URL="https://example.test/openproject"
export OPENPROJECT_API_KEY="your-api-key"
Common tasks
Identify the authenticated user:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" whoami
Inspect a specific user:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" get-user 5
Search users by login, name, or email:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" \
search-users "user@example.com" \
--limit 10
List projects, statuses, and project types:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" list-projects --limit 20
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" list-statuses --limit 50
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" list-types --project-id 1
List or inspect work packages:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" \
list-work-packages \
--project-id 1 \
--state open \
--limit 20
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" get-work-package 3
Send a raw API request for unsupported operations:
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" \
request get /api/v3/work_packages/3
python "$HOME/.cline/skills/openproject/scripts/openproject_api.py" \
request patch /api/v3/work_packages/3 \
--json '{"lockVersion":1,"subject":"Updated subject"}'
Write workflow
- Read the target collection or resource first.
- Confirm permissions from the response. Stop on
MissingPermission. - For
PATCH, fetch the current work package and include its currentlockVersion. - For create requests, send the payload to the project-scoped collection and include at least
subjectplus_links.type. - Prefer the generic
requestcommand for writes unless the operation is already proven against the target instance.
Attachment note
- Markdown attachments may be served without a
charset. Korean text can appear garbled when the file opens inline in the browser. - If inline readability matters, upload UTF-8 BOM bytes for the attachment.
- Do not rewrite the local source file unless the user asked for it.
- If inline readability matters more than raw Markdown, consider attaching PDF or HTML alongside the Markdown file.
References
- Read
references/api-patterns.mdfor customfilterspayloads and raw create or update bodies.