| name | summary |
| description | Show a compact dashboard table of all aweek agents (goals, tasks, budget, status) |
| trigger | aweek summary, agent summary, agent dashboard, show agents, list agents, aweek status |
aweek:summary
Display a one-screen dashboard for every aweek agent. Each row shows the
agent's name, goal count, weekly task progress, token-budget usage, and
current lifecycle state.
This skill is read-only — it never mutates agent data.
Instructions
Follow this exact workflow when invoked. Use the project's Node.js modules
in src/skills/summary.js — never read agent JSON files directly.
Step 1: Gather and render the dashboard
Run:
echo '{"dataDir":".aweek/agents"}' \
| aweek exec summary buildSummary --input-json -
The JSON result exposes result.report (the formatted table) and
result.agentCount. Present the formatted output from result.report
directly to the user.
Do not paraphrase or re-order columns — the table is intentionally compact.
Step 2: Offer drill-down (only when agents exist)
Do not volunteer the detail view automatically — keep the first screen
focused on the dashboard table. When result.agentCount === 0, skip this
step entirely.
2a. Fetch drill-down choices
Call getAgentDrillDownChoices to build a homogeneous list of options for
the prompt (every real agent plus a synthetic No thanks entry with
id: null):
echo '{"dataDir":".aweek/agents"}' \
| aweek exec summary getAgentDrillDownChoices --input-json -
2b. Ask which agent to inspect
Use AskUserQuestion with the labels from the previous step. The
recommended phrasing: "Inspect a specific agent in detail?"
- Map each choice's
label to an answer option.
- The
No thanks entry (with id: null) is always the last option — select
it to end the skill without any detail view.
2c. Render the detail block
If the user picks a real agent, call buildAgentDrillDown with its id
and print result.report verbatim:
echo '{"dataDir":".aweek/agents","agentId":"<id-from-the-user>"}' \
| aweek exec summary buildAgentDrillDown --input-json -
The returned JSON has a report field — print it verbatim.
The detail report is generated by formatAgentStatus from
src/skills/status.js — do not paraphrase or summarise it.
2d. Offer another drill-down (optional loop)
After showing the detail block, ask AskUserQuestion "Inspect another
agent?" with the same choice list. Repeat step 2c until the user picks
No thanks. Each loop iteration is a fresh AskUserQuestion — do not
collect multiple picks in a single prompt.
Dashboard Columns
| Column | Meaning |
|---|
| Agent | Agent display name (from identity.name) |
| Goals | Active goals (or active/total when some are completed/paused) |
| Tasks | Completed / total tasks in this week's plan (— when no plan) |
| Budget | used / limit (%) weekly tokens, or no limit when unlimited |
| Status | One of RUNNING, ACTIVE, PAUSED, IDLE |
Status meanings
| Value | Meaning |
|---|
RUNNING | Agent has an active lock — a CLI session is executing now |
ACTIVE | Agent has an approved plan with pending / in-progress tasks |
PAUSED | Agent's weekly budget is exhausted — paused until reset or top-up |
IDLE | Agent has no pending work or no approved plan |
No Agents
If no agents exist, the output will suggest running /aweek:hire to create
one. Do not attempt the drill-down step in that case.
Data Sources
All reads go through the file-based stores (files are the source of truth):
| Source | Path Pattern |
|---|
| Agent config | .aweek/agents/<agent-id>.json |
| Weekly plans | .aweek/agents/<agent-id>/weekly-plans/<week>.json |
| Token usage | .aweek/agents/<agent-id>/usage/<monday>.json |
| Inbox queue | .aweek/agents/<agent-id>/inbox.json |
| Lock files | .aweek/.locks/<agent-id>.lock |
Example Output
=== aweek Summary ===
Week: 2026-W16 (Monday: 2026-04-13)
Agents: 2
| Agent | Goals | Tasks | Budget | Status |
|-------|-------|-------|-------------------------------|--------|
| Alice | 2/3 | 2/5 | 25,000 / 100,000 (25%) | ACTIVE |
| Bob | 1 | 3/3 | 15,000 / 100,000 (15%) | IDLE |