<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concepts on aitasks</title><link>https://www.aitasks.io/docs/concepts/</link><description>Recent content in Concepts on aitasks</description><generator>Hugo</generator><language>en</language><atom:link href="https://www.aitasks.io/docs/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>Tasks</title><link>https://www.aitasks.io/docs/concepts/tasks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/tasks/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;task&lt;/strong&gt; is a markdown file with YAML frontmatter in the &lt;code&gt;aitasks/&lt;/code&gt; directory, named &lt;code&gt;t&amp;lt;N&amp;gt;_&amp;lt;short_name&amp;gt;.md&lt;/code&gt; (for example &lt;code&gt;aitasks/t130_add_login.md&lt;/code&gt;). The frontmatter block carries fields like &lt;code&gt;priority&lt;/code&gt;, &lt;code&gt;effort&lt;/code&gt;, &lt;code&gt;depends&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;labels&lt;/code&gt;, &lt;code&gt;assigned_to&lt;/code&gt;, &lt;code&gt;issue_type&lt;/code&gt;, &lt;code&gt;boardcol&lt;/code&gt;; the free-form markdown body describes the work. Tasks persist exactly the same way source code does: as files committed to git. Every CLI command, TUI, and code agent skill operates on those files directly.&lt;/p&gt;
&lt;h2 id="why-it-exists"&gt;Why it exists&lt;/h2&gt;
&lt;p&gt;Treating task tracking as a problem that belongs in version control means the full history of every task is visible in &lt;code&gt;git log&lt;/code&gt;, branches and worktrees can carry their own task state, and a code agent can read, write, and reason about tasks with the same tools it uses for source code. The frontmatter schema is intentionally small enough for an LLM to keep in context, but expressive enough to drive prioritization, dependency resolution, and Kanban-style triage.&lt;/p&gt;</description></item><item><title>Plans</title><link>https://www.aitasks.io/docs/concepts/plans/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/plans/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;plan&lt;/strong&gt; is a markdown file in &lt;code&gt;aiplans/&lt;/code&gt; named &lt;code&gt;p&amp;lt;N&amp;gt;_&amp;lt;short_name&amp;gt;.md&lt;/code&gt; (mirroring its task: &lt;code&gt;aiplans/p130_add_login.md&lt;/code&gt; corresponds to &lt;code&gt;aitasks/t130_add_login.md&lt;/code&gt;). Child task plans live under &lt;code&gt;aiplans/p&amp;lt;parent&amp;gt;/p&amp;lt;parent&amp;gt;_&amp;lt;child&amp;gt;_&amp;lt;name&amp;gt;.md&lt;/code&gt;. Each plan starts with a metadata header (the task it implements, the worktree, the branch, the base branch) and contains a context summary, a step-by-step implementation outline, the critical files to be touched, and verification steps. Plans are written during the planning phase of a skill like &lt;a href="https://www.aitasks.io/docs/skills/aitask-pick/"&gt;&lt;code&gt;/aitask-pick&lt;/code&gt;&lt;/a&gt; and approved by the user before any code is written.&lt;/p&gt;</description></item><item><title>Parent and child tasks</title><link>https://www.aitasks.io/docs/concepts/parent-child/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/parent-child/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;parent task&lt;/strong&gt; is a regular task whose work has been split into smaller &lt;strong&gt;child tasks&lt;/strong&gt;. The parent file lives at the usual location (&lt;code&gt;aitasks/t&amp;lt;N&amp;gt;_&amp;lt;name&amp;gt;.md&lt;/code&gt;); its children live in a sibling subdirectory &lt;code&gt;aitasks/t&amp;lt;N&amp;gt;/&lt;/code&gt; named &lt;code&gt;t&amp;lt;N&amp;gt;_&amp;lt;M&amp;gt;_&amp;lt;name&amp;gt;.md&lt;/code&gt; — for example &lt;code&gt;aitasks/t130/t130_1_add_login_form.md&lt;/code&gt;. The parent&amp;rsquo;s &lt;code&gt;children_to_implement&lt;/code&gt; frontmatter field lists the child IDs that still need work. Children automatically depend on each other in order, and when the last child is archived the parent is archived too.&lt;/p&gt;</description></item><item><title>Folded tasks</title><link>https://www.aitasks.io/docs/concepts/folded-tasks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/folded-tasks/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;folded task&lt;/strong&gt; is a task whose content has been &lt;strong&gt;merged into&lt;/strong&gt; another (the &lt;em&gt;primary&lt;/em&gt; task). Folding sets the folded task&amp;rsquo;s &lt;code&gt;status&lt;/code&gt; to &lt;code&gt;Folded&lt;/code&gt; and writes a &lt;code&gt;folded_into&lt;/code&gt; field pointing at the primary; the primary in turn lists every folded child in its &lt;code&gt;folded_tasks&lt;/code&gt; frontmatter field. At fold time the folded task&amp;rsquo;s body is incorporated into the primary&amp;rsquo;s description under a &lt;code&gt;## Merged from t&amp;lt;N&amp;gt;&lt;/code&gt; header — the folded file remains on disk only as a reference for archival cleanup, and it is deleted (not archived) when the primary is archived.&lt;/p&gt;</description></item><item><title>Review guides</title><link>https://www.aitasks.io/docs/concepts/review-guides/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/review-guides/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;review guide&lt;/strong&gt; is a markdown file in &lt;code&gt;aireviewguides/&lt;/code&gt; that captures a single concern a reviewer cares about — a security check, a portability rule, a stylistic convention, a project-specific invariant. Each guide carries a YAML frontmatter block (name, review type, language environment, files matched, similarity links to related guides) and a body of structured instructions the agent applies during review. Guides are organized into language-keyed subdirectories (&lt;code&gt;aireviewguides/python/&lt;/code&gt;, &lt;code&gt;aireviewguides/bash/&lt;/code&gt;, &amp;hellip;) so reviews can target only the guides relevant to the changed files.&lt;/p&gt;</description></item><item><title>Execution profiles</title><link>https://www.aitasks.io/docs/concepts/execution-profiles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/execution-profiles/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;execution profile&lt;/strong&gt; is a YAML file in &lt;code&gt;aitasks/metadata/profiles/&lt;/code&gt; that pre-answers the questions a skill would otherwise ask interactively. Each profile sets a handful of named keys — for example &lt;code&gt;skip_task_confirmation&lt;/code&gt;, &lt;code&gt;default_email&lt;/code&gt;, &lt;code&gt;create_worktree&lt;/code&gt;, &lt;code&gt;plan_preference&lt;/code&gt;, &lt;code&gt;post_plan_action&lt;/code&gt;, &lt;code&gt;qa_mode&lt;/code&gt;, &lt;code&gt;manual_verification_followup_mode&lt;/code&gt; — that the skill then consults at each decision point. Profiles are picked at the start of a skill run (with &lt;code&gt;--profile &amp;lt;name&amp;gt;&lt;/code&gt; or interactively from a list) and remain in effect for that session.&lt;/p&gt;</description></item><item><title>Verified scores</title><link>https://www.aitasks.io/docs/concepts/verified-scores/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/verified-scores/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;verified score&lt;/strong&gt; is a numeric rating attached to a (code agent, model, operation) triple — for example &amp;ldquo;claudecode/opus4_7 / implementation&amp;rdquo; or &amp;ldquo;geminicli/gemini-2.5-pro / code-review&amp;rdquo;. Every time a user completes a skill they are prompted for a 1-5 satisfaction rating; those ratings are stored, time-windowed (all-time / month / week), and aggregated into score buckets:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Bucket&lt;/th&gt;
 &lt;th&gt;Range&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Untested&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Partial&lt;/td&gt;
 &lt;td&gt;1-49&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Verified&lt;/td&gt;
 &lt;td&gt;50-79&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Highly verified&lt;/td&gt;
 &lt;td&gt;80-100&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Scores are surfaced in the &lt;a href="https://www.aitasks.io/docs/tuis/settings/"&gt;Settings TUI&lt;/a&gt; and on the model entry pages so you can see which agent/model combinations are reliable for which kinds of work in your project.&lt;/p&gt;</description></item><item><title>Agent attribution</title><link>https://www.aitasks.io/docs/concepts/agent-attribution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/agent-attribution/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Agent attribution&lt;/strong&gt; is the per-task record of which code agent and model did the implementation. It surfaces in three places:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The task&amp;rsquo;s &lt;code&gt;implemented_with&lt;/code&gt; frontmatter field, written at the start of implementation in the form &lt;code&gt;&amp;lt;agent&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt; — for example &lt;code&gt;claudecode/opus4_7_1m&lt;/code&gt;, &lt;code&gt;geminicli/gemini3pro&lt;/code&gt;, &lt;code&gt;codex/gpt5_4&lt;/code&gt;. The &lt;code&gt;&amp;lt;model&amp;gt;&lt;/code&gt; segment is the &lt;code&gt;name&lt;/code&gt; field from &lt;code&gt;aitasks/metadata/models_&amp;lt;agent&amp;gt;.json&lt;/code&gt;, not the raw runtime CLI ID.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;Co-Authored-By:&lt;/code&gt; trailer appended to the implementation commit, naming the model with a project-configurable email domain.&lt;/li&gt;
&lt;li&gt;The verified-scores subsystem, which keys per-operation satisfaction ratings off the same &lt;code&gt;&amp;lt;agent&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt; string.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;model&amp;gt;&lt;/code&gt; segment is a normalized short ID resolved from the agent&amp;rsquo;s runtime model — Claude Code reads it from its system message, Codex CLI from &lt;code&gt;~/.codex/config.toml&lt;/code&gt;, Gemini CLI from &lt;code&gt;~/.gemini/settings.json&lt;/code&gt;, and OpenCode from its system context. A wrapper-set &lt;code&gt;AITASK_AGENT_STRING&lt;/code&gt; environment variable overrides self-detection when present.&lt;/p&gt;</description></item><item><title>Locks</title><link>https://www.aitasks.io/docs/concepts/locks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/locks/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;task lock&lt;/strong&gt; is an atomic claim on a single task ID, recorded on a dedicated &lt;code&gt;aitask-locks&lt;/code&gt; git branch. When a skill picks a task it acquires the lock — recording the owner email, hostname, and timestamp — and only releases it on archival, abort, or explicit unlock. While a lock is held, other PCs and agents see the task as unavailable: a competing &lt;code&gt;/aitask-pick&lt;/code&gt; that targets the same ID will fail with a structured &lt;code&gt;LOCK_FAILED&lt;/code&gt; outcome that includes the current owner. Stale locks (held by a hostname/agent no longer working the task) can be force-unlocked, optionally with a confirmation prompt.&lt;/p&gt;</description></item><item><title>Task lifecycle</title><link>https://www.aitasks.io/docs/concepts/task-lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/task-lifecycle/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;Every task carries a &lt;code&gt;status&lt;/code&gt; field that captures where it is in its life:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Status&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Ready&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Created and triaged. Available to be picked.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Editing&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Being authored or revised in a TUI; not yet ready for implementation.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Implementing&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A skill has claimed the task; an agent is actively working on it.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Postponed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Deferred — left visible but skipped during normal selection.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Done&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Implementation finished and committed. Awaiting archival.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Folded&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The task has been merged into another (the &lt;code&gt;folded_into&lt;/code&gt; task).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Transitions are driven by the workflow scripts: picking a task moves &lt;code&gt;Ready → Implementing&lt;/code&gt; and acquires a lock; a successful run moves &lt;code&gt;Implementing → Done&lt;/code&gt; (then &lt;code&gt;Done → Archived&lt;/code&gt; as the file moves into &lt;code&gt;aitasks/archived/&lt;/code&gt;); aborting reverts to &lt;code&gt;Ready&lt;/code&gt; and releases the lock. Folded is a terminal status — folded files are deleted (not archived) when the primary they were merged into is archived.&lt;/p&gt;</description></item><item><title>Git branching model</title><link>https://www.aitasks.io/docs/concepts/git-branching-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/git-branching-model/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;aitasks splits the repository across several long-lived branches:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Branch&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;main&lt;/code&gt; (or your code branch)&lt;/td&gt;
 &lt;td&gt;Source code only — no &lt;code&gt;aitasks/&lt;/code&gt; or &lt;code&gt;aiplans/&lt;/code&gt; content.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;aitask-data&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;All task and plan files. Checked out as a worktree at &lt;code&gt;.aitask-data/&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;aitask-locks&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Atomic task locks (one commit per lock acquire / release).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;aitask-ids&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Reservation log used to allocate fresh task IDs without collisions.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;aitasks/&lt;/code&gt; and &lt;code&gt;aiplans/&lt;/code&gt; at the project root are &lt;strong&gt;symlinks&lt;/strong&gt; into the &lt;code&gt;.aitask-data/&lt;/code&gt; worktree, so they appear in the usual places but actually live on &lt;code&gt;aitask-data&lt;/code&gt;. The &lt;code&gt;./ait git&lt;/code&gt; wrapper routes git commands to the correct worktree based on the paths you pass — &lt;code&gt;./ait git add aitasks/t42_foo.md&lt;/code&gt; operates on &lt;code&gt;aitask-data&lt;/code&gt;, &lt;code&gt;git add src/foo.py&lt;/code&gt; operates on &lt;code&gt;main&lt;/code&gt;, and the two are committed independently.&lt;/p&gt;</description></item><item><title>The IDE model</title><link>https://www.aitasks.io/docs/concepts/ide-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/ide-model/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;The aitasks &lt;strong&gt;IDE&lt;/strong&gt; is a tmux session organized by &lt;strong&gt;window-naming convention&lt;/strong&gt;, not a fixed layout. The framework reserves a small set of window names — &lt;code&gt;monitor&lt;/code&gt;, &lt;code&gt;board&lt;/code&gt;, &lt;code&gt;codebrowser&lt;/code&gt;, &lt;code&gt;settings&lt;/code&gt;, &lt;code&gt;brainstorm&lt;/code&gt;, plus an &lt;code&gt;agent-&amp;lt;n&amp;gt;&lt;/code&gt; prefix for code agent windows — and the integrated TUIs all look up tmux windows by these names. Open, close, rearrange, or split them however you like; what matters is the name.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.aitasks.io/docs/tuis/monitor/"&gt;Monitor TUI&lt;/a&gt; acts as the conventional home screen, listing every code agent and TUI window in the session with a live preview and keystroke forwarding. Pressing &lt;strong&gt;&lt;code&gt;j&lt;/code&gt;&lt;/strong&gt; in any main TUI opens the &lt;strong&gt;TUI switcher&lt;/strong&gt; dialog, which lists every integrated TUI plus every running code agent window — selecting an entry either focuses the existing window (looked up by name) or spawns it on the fly. A narrow &lt;a href="https://www.aitasks.io/docs/tuis/minimonitor/"&gt;Minimonitor sidebar&lt;/a&gt; variant of monitor can sit next to a code agent pane to keep sibling activity visible without giving up screen real estate.&lt;/p&gt;</description></item><item><title>Agent memory</title><link>https://www.aitasks.io/docs/concepts/agent-memory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.aitasks.io/docs/concepts/agent-memory/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;
&lt;p&gt;Once a task is archived, its task file moves to &lt;code&gt;aitasks/archived/&lt;/code&gt; and its plan file — including the post-implementation notes — moves to &lt;code&gt;aiplans/archived/&lt;/code&gt;. Together they form a structured, version-controlled record of every change ever made through the framework, linked back to the commits that implemented them. The framework treats this archive as &lt;strong&gt;agent memory&lt;/strong&gt;: a queryable corpus that subsequent agent sessions read instead of re-deriving context from scratch.&lt;/p&gt;</description></item></channel></rss>