NAME
App::karr::Cmd::Context - Generate board context summary for embedding
VERSION
version 0.601
SYNOPSIS
karr context
karr context --sections blocked,overdue
karr context --write-to AGENTS.md --days 14
karr context --activity-limit 10
karr context --json
karr context --compact
DESCRIPTION
Builds a concise board summary suitable for embedding into agent context files such as AGENTS.md. The command can print Markdown directly, emit structured JSON, or update an existing file between sentinel comments.
--compact prints the board's four numbers and nothing else -- one key=value per line, under the same names the --json summary uses, with no headings, no sections and no sentinels:
board_name=karr
total_tasks=41
active=7
blocked=1
overdue=0
That is the reading of a briefing that fits in a prompt header or a status line, and it is what context --compact was silently failing to do while --compact was declared for every command in App::karr::Role::Output (#254). It shapes what is printed, not what is written: with --write-to the file still receives the Markdown block, because those sentinels are an interop contract with kanban-md (see "FILE UPDATE MODE") and a compacted block would be one neither tool could find again.
--json and --compact do not compete with --write-to and never did (#260). --write-to is a side effect; the output flags decide what stdout carries. All three combinations write the same Markdown block to the file and differ only in what is printed:
karr context --write-to AGENTS.md Context written to AGENTS.md
karr context --json --write-to AGENTS.md the JSON payload
karr context --compact --write-to AGENTS.md the four numbers
With an output flag the Context written to ... confirmation goes to stderr, so karr context --json --write-to AGENTS.md > ctx.json leaves behind a file that decodes whole -- the channel rule delete's prompt follows for the same reason (#248). Without one, stdout is prose anyway and the line stays there.
Only archived tasks are left out of the summary: finished work still counts towards the reported total, the rule kanban-md applies to the same block. One number deliberately diverges -- a card in a terminal status is not counted or listed as blocked here even when its flag is still set, because a done card is not an active blocker (tickets #229, #295). Its block_reason stays on the card as provenance and karr list --blocked --status done still finds it.
SECTIONS
The generated context can include in-progress, blocked, overdue, recently-completed, and activity. Use --sections with a comma-separated list to limit the output to a subset.
activity is the board's activity log (see App::karr::Cmd::Log), filtered to entries written by identities other than the one invoking context and bounded by --activity-limit (default 5). An agent reading its own briefing already knows what it just did -- karr show --me is the tool for that -- so what belongs in a briefing is what everyone *else* has been doing.
recently-completed looks back --days days (default 7) from now; a task qualifies when its completed stamp falls on or after that cutoff, compared to day granularity rather than to the second so the comparison stays correct whether the stamp is a bare YYYY-MM-DD or a full RFC3339 timestamp.
FILE UPDATE MODE
When --write-to is used, the command replaces the content between BEGIN kanban-md context and END kanban-md context if those sentinels are already present; otherwise it appends the generated block to the file. A file that does not exist yet is created carrying the block alone.
It is a file update and not a redirection: the rest of the host file is left as it was, and a later run rewrites the same block in place rather than adding a second one. That is why the block is always Markdown, whatever --json or --compact ask for on stdout -- both tools find their block by these sentinels, and a payload between them is one neither could update again.
SEE ALSO
karr, App::karr, App::karr::Cmd::Board, App::karr::Cmd::List, App::karr::Cmd::Config, App::karr::Cmd::Skill, App::karr::Cmd::Log
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)