Adam Blackwell

Operating loops · task capture · local-first AI tooling

An operating loop for AI-assisted work

AI makes it cheap to start more work. The bottleneck is carrying that work across sessions without dropping commitments, rebuilding context, or handing an agent unchecked control. These small, inspectable loops make the work easier to carry forward and the process easier to improve.

Part two of a series. Start with Memory as reliability practice, then Reflecting your own work back as a learning plan.

Role lensEngineering manager (SRE background)
Artifactproductivity plugin
ScopeClaude Code and Codex, one vault

Why I built this

The scarce resource in AI-assisted work is not output. It is continuity: knowing what matters, what changed, and what needs to happen next.

LLMs let me explore more ideas and move through implementation faster. They also create more places for useful work to evaporate. A task comes up mid-session and never reaches the backlog. A session gets cleared with uncommitted work still in the tree. Friday arrives and I have to reconstruct what the week's AI work actually produced. AI made each session faster while making the gaps between sessions the new bottleneck.

My memory vault fixed decision loss, but remembering is not the same as following through. I needed a lightweight way to turn transient AI work into durable state: important commitments land in one backlog, sessions end with recoverable work, daily status comes from source evidence, and repeated friction becomes visible at the end of the week.

That is the reason for this plugin. It is not an attempt to automate every part of my job. It is a way to make AI's speed compound instead of reset. The loops handle capture and reconstruction so I can spend attention on judgment, collaboration, and the work itself.

The engineering instinct is the same one I bring to reliability work: when a manual step keeps failing, you do not try harder, you build a small system with a clear contract. The productivity plugin is that system: a handful of skills that share one vault and one convention, each small enough to read in a few minutes and reason about completely.

AI makes work cheaper to start. The loop makes it more likely to finish and easier to improve.

The loop

The skills form a daily-to-weekly cadence around a single git-backed vault. The vault is the only shared state; every skill reads from it and writes plain Markdown back to it, so any one of them works standalone and none of them depends on another's runtime.

flowchart TB
  subgraph capture["In the moment"]
    direction LR
    T["/todo · capture a durable task"]
    W["/wrapup · is it safe to /clear?"]
  end
  subgraph review["Daily → weekly"]
    direction LR
    S["/standup · Jira + backlog → status"]
    D["/daily-wrapup · goals + tomorrow"]
    C["/ai-coach · Friday, report-only"]
  end
  V[("Obsidian vault · Markdown, git-backed")]
  T -->|"append (idempotent)"| V
  W -->|"read state"| V
  V --> S
  V --> D
  D -->|"commit goals"| V
  V --> C
  C -.->|"writes a report, changes nothing"| V
            
The vault is the substrate. Capture skills write to it in the moment; review skills read from it on a daily-to-weekly rhythm. The Friday coach is deliberately one-directional: it reads the week and writes a report, but changes nothing on its own.

Two skills run in the moment, three on a daily-to-weekly rhythm:

In the moment

  • /todo: capture a durable task in the vault's Kanban backlog.md. Idempotent by design: re-adding an item deduplicates instead of stacking, and an explicit "urgent" promotes the existing item rather than creating a second copy.
  • /wrapup: the pre-/clear preflight. Before you throw away a session, it checks for uncommitted changes, unpushed commits, running jobs, and open obligations, and tells you whether it is actually safe to clear.

Daily and weekly

  • /standup: a daily or weekly status built from Jira, the backlog, and daily reports. The paste-ready block is capped at 90 words and eight bullets; private notes surface the credible five-minute closes.
  • /daily-wrapup, end-of-day review: yesterday's goals, today's outcomes, tomorrow's preview, and a goal commit written back into the vault's session note.
  • /ai-coach: a Friday, report-only review of the week's session notes: repeated friction, capabilities I keep bypassing, and memory candidates. It writes a report and changes nothing.

/productivity-setup ties it together. It installs managed local copies of these skills for every Claude Code and Codex client it detects, records your vault path in ~/.config/adzuci-productivity/config.json, and offers to schedule the Friday coach with whatever scheduler is native to the client you are in. The plugin also ships /budgetclaw-setup for local spend monitoring and an agent-ops pair for privacy-safe scheduled agents.

Contracts, not vibes

The reason I trust these loops enough to run them on autopilot is that each one has an explicit, testable contract. Three examples worth calling out for an engineering audience:

SkillThe contractWhy it holds
/todo Adding the same task twice is a no-op; "urgent" promotes rather than duplicates. A Python helper normalizes bullets, deduplicates case-insensitively, and writes atomically; behavior is pinned by unit tests, not by prompt wording.
/standup The paste-ready block is always under 90 words and eight bullets. A checker script runs against the draft before it is returned; boundary cases (exactly 90 words, exactly eight bullets) are covered in the test suite.
/ai-coach Report-only: it never writes durable memory or mutates a ticket on its own. It requires evidence from multiple sessions before recommending anything, verifies invocations against skills you actually have installed, and stops at proposing.

Design guardrails

The same rules as the memory plugin, because they are the reason the whole thing is safe to leave running:

Everything is plain files. Tasks are Markdown checkboxes in a Kanban board Obsidian renders natively; coach reports are dated Markdown in coaching/. Installs are dry-run first and confirmation-gated: they never overwrite an unmanaged skill of the same name, and every managed copy carries a marker file so updates are safe and removal is obvious. Scheduling uses the client's own scheduler; where there is no good native option, the setup skill hands you the exact manual command instead of quietly writing a cron job. And writes that could compound (task capture, goal commits) are idempotent, so a double-run or a retry never corrupts the board.

What changed in practice

The outcomes I care about are fewer dropped commitments, faster restarts, and evidence I can use to improve how I work. Four months of running this, measured off the vault it writes to:

610
session summaries archived since Mar 16
84
daily notes the loop reads and writes
19
days I closed out with /daily-wrapup

The SessionEnd hook does the archiving, so those 610 summaries cost me nothing to keep, and I stopped deciding what was worth writing down. On the 19 days with something to reconcile I ran /daily-wrapup, and each one means the next morning starts from a written plan instead of a cold read. Tasks moved out of chat scrollback and into the backlog, because capturing one is now cheaper than scrolling to find it. And the Friday coach reads that same pile and, often enough to matter, names a habit I had not clocked. The loops are small; the state compounds.

The practical test: if this is working, tasks stop living in chat scrollback, sessions end clean, and Friday's coach report occasionally surfaces a pattern you would otherwise have missed.

Why I am publishing it

The interesting part is not one more personal productivity setup. It is comparing failure modes and better contracts with other people building AI-assisted workflows. I am sharing the working implementation so others can test it, challenge it, and show me better loops. If you are working on this too, open an issue or reach out. If AI leverage, operational rigor, and explicit guardrails sound like your kind of engineering culture, I would enjoy connecting. You may also find Apollo's open roles interesting.

Honest limitations

It assumes the vault convention from the memory plugin: a sessions/ directory of curated notes is what makes the coach useful; without it, weekly mode has little to read. The Kanban layout is an opinion (six fixed sections), not a framework. Scheduling is best-supported on the clients I use daily; elsewhere you get the manual command rather than a background job installed on your behalf. And like everything in this repo, it is tested primarily on macOS; Linux and Windows reports are welcome.

Install the plugin

Add the public marketplace once, install, then run setup.

Claude Code

claude plugin marketplace add adzuci/claude-plugins
claude plugin install productivity@adzuci-plugins
/productivity:productivity-setup

Codex

codex plugin marketplace add adzuci/claude-plugins
codex plugin add productivity@adzuci-plugins
/productivity-setup

Setup asks before it writes anything outside the current project. Pairs best with the memory plugin's vault, but any Obsidian vault works.