NAME
App::karr::Cmd::Edit - Modify an existing task
VERSION
version 0.600
SYNOPSIS
karr edit 5 --title "Updated title"
karr edit 5 --add-tag urgent --remove-tag stale
karr edit 5 --add-depends-on 2,3 --remove-depends-on 4
karr edit 5 --add-needs other-repo#7 --block "needs other-repo#7: API change first"
karr edit 5 -a "Waiting for review"
karr edit 5 -a "Handed the API question upstream" --timestamp
karr edit 5 --claim agent-fox --block "waiting on API"
DESCRIPTION
Updates one or more existing tasks in place. Use it to adjust metadata, append notes, manage tags, claim or release ownership, and mark tasks as blocked or unblocked without changing the task id.
At least one field option is required. karr edit 5 on its own, or with only output options such as --json, names nothing to change and is rejected as a usage error (exit 2) before any task is read -- it used to report Updated task 5, bump updated and append an activity-log entry for a card nothing had touched. An option carrying an empty value counts as no option at all here, matching the write path, which discards such a value rather than storing it.
COMMON OPERATIONS
Metadata updates
--title,--status,--priority,--assignee, and--duereplace existing values.--statusis the same status change App::karr::Cmd::Move performs and obeys the same rules,require_claimincluded.Claim ownership
Editing a task claimed by another agent is refused unless that claim has expired.
--claimwith the current claimant's name proceeds, and--releaseis exempt, since breaking a stale claim is what it is for.Body updates
--bodyreplaces the entire body;-a/--append-bodyappends text to the existing body as a paragraph of its own, separated from it by a blank line, so a note reads as a note and not as a continuation of the line above it. An empty body gains no separator.-t/--timestampprefixes the appended text with the current UTC time (YYYY-MM-DD HH:MM), the same stamp App::karr::Cmd::Handoff writes; without it the text is appended verbatim, so appending Markdown structure stays possible.--bodyand--append-bodyare alternatives, not a sequence: naming both is rejected as a usage error (exit 2) before any task is read, rather than writing the one concatenated body neither of them asked for. Existing cards are not rewritten: the separator rule applies to appends made from here on.Claims and blocking
--claimrefreshes claim ownership and timestamp,--releaseclears the claim,--blockrecords a blocking reason, and--unblockremoves it. Each of those two pairs contradicts itself, so--claimwith--releaseand--blockwith--unblockare rejected as usage errors (exit 2) before any task is read.Tag management
--add-tagand--remove-tagaccept comma-separated lists.Dependency management
--add-depends-onand--remove-depends-onaccept comma-separated task ids and follow the tag rule: add appends without duplicating, remove is a no-op for ids the card does not carry. Ids being added must exist on this board and must not name the task itself; an unknown or non-numeric id rejects the whole invocation as a usage error before anything is written, while a self-reference fails only the id it is wrong for and lets the rest of the batch proceed. Removing an id the board no longer has stays legal -- it is how a dependency on a deleted task is cleaned up.Cross-board dependency management
--add-needsand--remove-needsaccept comma-separated<board>#<id>references naming a card in another repository of the fleet, and follow the tag rule as well. Only the syntax is checked: whether that board is on this machine is local configuration, which is App::karr::Cmd::Needs's question, not this command's. A reference that is not<board>#<id>-- a path in particular -- rejects the whole invocation.
SEE ALSO
karr, App::karr, App::karr::Cmd::Show, App::karr::Cmd::Move, App::karr::Cmd::Handoff, App::karr::Cmd::List, App::karr::Cmd::Needs, App::karr::CrossBoard
SUPPORT
Issues
Please report bugs and feature requests on GitHub at https://github.com/Getty/karr/issues.
IRC
Join #langertha on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <getty@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)