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 --due replace existing values. --status is the same status change App::karr::Cmd::Move performs and obeys the same rules, require_claim included.

  • Claim ownership

    Editing a task claimed by another agent is refused unless that claim has expired. --claim with the current claimant's name proceeds, and --release is exempt, since breaking a stale claim is what it is for.

  • Body updates

    --body replaces the entire body; -a/--append-body appends 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/--timestamp prefixes 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. --body and --append-body are 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

    --claim refreshes claim ownership and timestamp, --release clears the claim, --block records a blocking reason, and --unblock removes it. Each of those two pairs contradicts itself, so --claim with --release and --block with --unblock are rejected as usage errors (exit 2) before any task is read.

  • Tag management

    --add-tag and --remove-tag accept comma-separated lists.

  • Dependency management

    --add-depends-on and --remove-depends-on accept 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-needs and --remove-needs accept 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)