NAME

App::karr::Cmd::Create - Create a new task

VERSION

version 0.601

SYNOPSIS

karr create "Fix login bug"
karr create --title "Write release notes" --priority high --status todo
karr create --title "Review API" --tags docs,review --body "Check CLI help"
karr create "Ship it" --depends-on 2,3
karr create "Wait for the fix" --needs other-repo#7

DESCRIPTION

Creates a new task in the ref-backed board. The new task inherits defaults from the materialized board config and can be seeded with metadata such as priority, class of service, due date, tags, and body text.

OPTIONS

  • --title

    Explicit task title. If omitted, the first positional argument is used. Giving the title both ways at once -- karr create TITLE --title OTHER -- is rejected as a usage error (exit 2): the two can hold different strings and nothing decides which one was meant.

  • --status, --priority, --class

    Override the configured default lifecycle values for the new task.

  • --assignee, --tags, --due, --estimate

    Populate optional frontmatter fields at creation time.

  • --depends-on

    Comma-separated ids of tasks this one depends on, same shape as --tags. Every id must name a task on this board; an unknown or non-numeric id rejects the create as a usage error before an id is allocated, so nothing is burned (ticket #54). Taking the new card up while a dependency is unfinished warns -- see App::karr::Cmd::Move.

  • --needs, --escalated-from

    The two ends of a cross-board dependency, comma-separated <board>#<id> references: --needs for a card that cannot proceed until something is fixed in another repository, --escalated-from for the card raised in that other repository to record where the escalation came from. Only the syntax is validated -- whether the far board is on this machine is local configuration, so the lookup belongs to karr needs and not here. See App::karr::CrossBoard.

  • --body

    Adds Markdown body text below the YAML frontmatter.

  • --claim

    Claim the new task for an agent, stamping claimed_by and claimed_at exactly as karr move --claim does. A status the board's require_claim list covers is refused without it, with the invocation that would have worked as the last line of the error.

    KARR_CLAIM (ADR 0005) stands in for the flag only when --status names a column that requires a claim -- the card is being started right now, and the remembered claim is what satisfies that refusal and is then written. Without --status, or with one that needs no claim, the environment is not consulted and the card is filed unclaimed: a Claim is a lease held while working a card, and a card filed into the backlog for whoever picks it next is not being worked. Before ticket #286 the filer's remembered claim landed on every card, which hid a freshly filed bug from every other agent's karr pick and karr list --unclaimed until claim_timeout ran out. An explicit --claim stamps the claim on any status.

  • --json

    Emit the created card in the same shape karr show --json uses -- frontmatter plus body, one object -- and nothing else on stdout, so a caller can pipe the new id into the next step.

SEE ALSO

karr, App::karr, App::karr::Cmd::List, App::karr::Cmd::Show, App::karr::Cmd::Edit, App::karr::Cmd::Move

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)