| name | common-operations |
| description | This skill should be used when the user wants to do project-management work in Taiga — "create a user story / task / issue / epic in Taiga", "start a new sprint", "move a story to In Progress", "assign a task", "comment on an issue", "add members to a Taiga project", "build a sprint report", or any everyday Taiga operation. Provides plain-language workflows that drive the REST API and route to the exact endpoints. |
Taiga Common Operations
Plain-language playbooks for everyday Taiga work. Each one drives the REST API. For exact endpoint signatures and every field, open the api-reference skill's matching references/*.md file (named in each workflow).
Before anything: ensure a token
If TAIGA_AUTH_TOKEN is not already set this session, run the setup skill's login first. Every call below assumes TAIGA_AUTH_TOKEN and TAIGA_API_URL are set and uses Authorization: Bearer ${TAIGA_AUTH_TOKEN}.
The golden rules (why workflows look the way they do)
- Resolve names to IDs once. Users say "project apollo, story #42"; the API wants numbers. Hit
/resolver first and keep the IDs. (→ search-import.md)
- Read before you write. Editing an item requires its current
version. Always GET it, take .version, then PATCH with that version. (→ setup)
- Discover valid values per project. Status/type/priority IDs differ per project. Use the resource's
.../filters_data?project=<id> or list the *-statuses endpoint to pick the right ID instead of guessing.
- Confirm before deleting.
DELETE is irreversible; ask the user first.
Workflow: find a project and its building blocks
PID=$(curl -s -H "Authorization: Bearer ${TAIGA_AUTH_TOKEN}" \
"${TAIGA_API_URL%/}/api/v1/resolver?project=apollo" | jq -r .project)
curl -s -H "Authorization: Bearer ${TAIGA_AUTH_TOKEN}" \
"${TAIGA_API_URL%/}/api/v1/userstory-statuses?project=${PID}" | jq -r '.[] | "\(.id)\t\(.name)"'
(→ projects.md, user-stories.md)
Workflow: create / update a work item
The shape is identical for user stories, tasks, issues, and epics — only the path and a few fields differ.
- Create —
POST the collection with project + subject (+ optional status, assigned_to, milestone, classifiers).
- Update —
GET the item → read .version → PATCH with the changed fields and version.
- Move status —
PATCH { "status": <statusId>, "version": <v> }.
- Assign —
PATCH { "assigned_to": <userId>, "version": <v> }.
- Tag —
PATCH { "tags": [["urgent","#ff0000"], ...], "version": <v> }.
- Comment —
PATCH { "comment": "text", "version": <v> } (comments ride on the item; → history-webhooks.md).
- Attach a file — multipart
POST .../attachments with project, object_id, attached_file.
Reference per type: stories → user-stories.md, tasks → tasks.md, issues → issues.md, epics → epics.md.
US=$(curl -s -H "Authorization: Bearer ${TAIGA_AUTH_TOKEN}" "${TAIGA_API_URL%/}/api/v1/userstories/1234")
curl -s -X PATCH -H "Authorization: Bearer ${TAIGA_AUTH_TOKEN}" -H "Content-Type: application/json" \
-d "{\"status\":456,\"version\":$(echo "$US" | jq -r .version)}" \
"${TAIGA_API_URL%/}/api/v1/userstories/1234" | jq '{id, status}'
Workflow: sprint planning
- Create the sprint:
POST /milestones with project, name, estimated_start, estimated_finish. (→ milestones-wiki.md)
- Put stories in it: on each story
PATCH { "milestone": <sprintId>, "version": <v> }, or move many at once with POST /userstories/bulk_update_milestone. (→ user-stories.md)
- Add tasks under stories:
POST /tasks with user_story set. (→ tasks.md)
- Track progress:
GET /milestones/{id}/stats for points completed / remaining. (→ milestones-wiki.md)
Workflow: bug triage
- Discover classifier IDs:
GET /issues/filters_data?project=<id> → status, type, priority, severity. (→ issues.md)
- Create:
POST /issues with project, subject, type, priority, severity.
- Assign + comment + attach a screenshot as in "create/update a work item".
- Resolve:
PATCH { "status": <closedStatusId>, "version": <v> }.
Workflow: manage project access
- List members:
GET /memberships?project=<id>. (→ projects.md)
- Invite:
POST /memberships with project, role, username (email), or many via POST /memberships/bulk_create.
- Change a role:
PATCH /memberships/{id} with role + version.
- Manage roles/permissions:
roles + permissions endpoints. (→ projects.md)
Workflow: search & report
- Find items:
GET /search?project=<id>&text=<q>. (→ search-import.md)
- Filtered lists:
GET /userstories?project=&milestone=&status=&assigned_to= (same pattern for tasks/issues).
- Numbers:
GET /projects/{id}/stats, GET /projects/{id}/issues_stats, GET /milestones/{id}/stats.
- Full export:
GET /exporter/{projectId} → poll the dump URL. (→ search-import.md)
When a call fails (401, 400 version conflict, 403), switch to the troubleshoot skill.