From projekt-skills
Bulk-create and triage Projekt issues (projekt.3xa.es) from a CSV/JSON backlog, and assign-then-move issues across board columns safely. Use when the user wants to import a backlog, mass-create tasks, assign owners, or move issues to In Progress/Done. Soporta español: crear incidencias en lote, importar backlog, asignar responsables, mover tareas de columna, triaje. Enforces the assignee-required rule so unassigned issues never enter a working column.
How this skill is triggered — by the user, by Claude, or both
Slash command
/projekt-skills:projekt-issuesThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create issues in bulk from a file, and assign+move existing issues, with dry-run safety and
Create issues in bulk from a file, and assign+move existing issues, with dry-run safety and
idempotent resume. Part of the projekt pipeline (phases CREATE + ASSIGN).
SK="${CLAUDE_SKILL_DIR}/scripts" — use it for every command below.
Run the projekt skill's setup first; these scripts read .projekt-run/context.json and
never re-query identity:
bash "${CLAUDE_SKILL_DIR}/../projekt/scripts/auth_check.sh"
bash "${CLAUDE_SKILL_DIR}/../projekt/scripts/context_sync.sh"
If there's no token, see skills/projekt/references/auth-setup.md.
bulk_issue_create.pyReads the columns of skills/projekt/assets/import_template.csv
(title,description,status,assignee,estimated_hours,priority,type,labels,external_ref) or a JSON
list. Resolves the project by key/name and each assignee (email or name) → user_id from context.
Dedupes against a live GET /issues sweep (by title and external_ref) and the Ledger.
# DRY-RUN: prints a create/skip table, writes nothing
python3 "$SK/bulk_issue_create.py" --project WEB --file backlog.csv
# APPLY: sequential POST /issues, ≤3 in flight, every create logged for resume
python3 "$SK/bulk_issue_create.py" --project WEB --file backlog.csv --apply
There is no bulk-create endpoint — /issues/bulk only mutates existing issues. So creation is
one POST per row at concurrency ≤3 (--concurrency, capped at 3). Re-running creates 0 (idempotent).
Flags: --strict-status skips (instead of demoting) rows that target a working column with no owner.
assign_and_move.pyAssigns an owner then moves issues to a target column via POST /issues/bulk — two actions in order:
{action:"assignee",value} then {action:"status",value}.
# DRY-RUN
python3 "$SK/assign_and_move.py" --issues WEB-12,WEB-13 --assignee [email protected] --status "In Progress"
# APPLY
python3 "$SK/assign_and_move.py" --issues WEB-12,WEB-13 --assignee [email protected] --status "In Progress" --apply
Issue tokens are keys (WEB-12) or ids. --assignee is optional (omit it when the issues already have
owners and you only need to move them).
An issue cannot leave Backlog/To Do for a working column (In Progress / In Review / Done) without an
assignee_id — the API returns 422 (blocked_unassigned). See skills/projekt/references/errors.md.
--strict-status skips it instead.Backlog/To Do without an assignee is always fine./issues/bulk does NOT create — it only mutates existing issues (assignee/status/priority/labels).
Use bulk_issue_create.py for creation.(project_id,title) + external_ref. Give every import row a stable external_ref
so re-imports are safe even if a title is edited.project.columns); the server normalizes localized inputs ("En revisión").
Defaults: Backlog, To Do, In Progress, In Review, Done (errors.md).No estimation (→ projekt-estimate), no time logging (→ projekt-time), no docs (→ projekt-docs), no
workload reports (→ projekt-workload). No hard delete (use /issues/:iid/archive). No CSV editing — it
only reads the import file. It never touches the 1.3 MB spec.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub 3xadesign/projekt-skills --plugin projekt-skills