Skip to content
Back to skills

Cto Routines

ASecurity

Use when the user asks the CTO "status?" (or /team-status), "pick up the work" (or /pick-up), "safe to restart?", "wrap up the day" (or /wrap-up, "finish the day", "end of day"), or when a "STATUS REFRESH:" or "CATCH UP <Project>:" line arrives in the CTO's prompt.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
ai-agentsgoshellgit

Security analysis

A100/100

Scanned November 11, 2026

npx -y skills add ZazaGdev/FocusShell --skill cto-routines --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cto Routines?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cto Routines
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zazagdev-cto-routines/badge)](https://www.skillsdirectory.com/skills/zazagdev-cto-routines)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cto-routines
description: Use when the user asks the CTO "status?" (or /team-status), "pick up the work" (or /pick-up), "safe to restart?", "wrap up the day" (or /wrap-up, "finish the day", "end of day"), or when a "STATUS REFRESH:" or "CATCH UP <Project>:" line arrives in the CTO's prompt.
---

# Status, catch up, pick up, safe to restart, wrap up

Part of the CTO's rules (`manager/CLAUDE.md`), kept here so the core stays short. `<data>`,
`<projects>` and every path mean the same as there. A group CTO covers only the projects in
its group.

## Status

When the user asks "status?" (or types `/team-status`), call `ListAgents`, then send each live lead of a project in no group
`STATUS?` with `notify_when_idle: true`. A project with a `~` task whose lead is not
listed: run `ListAgents` again, and look for a row whose name starts with `lead-<Project>`
and its busy or idle state. Only when no such row exists, `deck mark <Project> <n> blocked
--result 'lead silent'` and offer to reopen the pane. Never tell the user a lead needs a
restart from a missing reply alone (a row marked "shell" can still be a live lead).

### Status refresh

FocusShell types `STATUS REFRESH: lead-A, lead-B` into your pane on the interval the user picked
in Settings (30 minutes unless changed) while a lead is busy or has started or finished work
since the last one, even while you are busy: then it waits in your queue, and you handle it at
your next pause. It feeds the Status button above
your pane. For each lead named, write one short line of where it stopped:
`deck status lead-<Project> '<where it stopped>'` (such as `DONE #383, idle` or `on #384,
waiting on ANSWER`). Take it from that lead's last report or reply to you. Only when you have
nothing from a lead since its last line, and `ListAgents` shows it idle, send it `STATUS?` and
write its reply when it comes. Never message a busy lead for this: the view shows it busy by
itself. Do not reply to the user about a refresh, and do not change any board for it.

### Catch up

`CATCH UP <Project>: <file or one-line recap>` comes after the user pressed Open and catch up
on a group: one line per project, with a recap file of where it stands and where work stopped
yesterday (or the lead's own one-line recap). Once the lines for that group have arrived, tell
the user each project's recap in two or three lines, with the file's full path. Change no board
and send nothing to the leads for it.

## Pick up the work, safe to restart

Two things the user says at the start of most sessions. Do them without asking which
projects; the user should not have to say either twice.

**"Pick up the work"** (or `/pick-up`; also "pick up the work on all projects", "from previous sessions",
"on interrupted sessions"): for every project you own, read its task file and hand out
its open (` `) tasks as in "Handing out work". Skip `for owner` tasks, and tasks whose
detail lines say the user parked them or wants to brainstorm first. Call `ListAgents`;
for each `~` task whose lead is not listed, offer to reopen the pane and resend it. Then
tell the user one line per project: what went out, and what is waiting on them.

**"Safe to restart?"** (also "is every ongoing task done so I can restart?"): call
`ListAgents` and read the `~` tasks of every project you own. Answer one line per project:
busy (which task) or idle. If any lead is busy, use `notify_when_idle: true` and tell the
user the moment the last busy lead finishes. A lead in the middle of a long test run can
be asked to stop and run it after the restart, if the user would rather not wait.

## Wrap up the day

"Wrap up the day" (or `/wrap-up`; also "finish the day", "end of day") means: make every
board you own match what each lead actually did today, so tomorrow's "pick up the work"
starts from the truth. Work that is not finished stays open; nothing is forced closed. Do it
without asking which projects.

1. Call `ListAgents`. Send each live lead of a project you own (not `lead-Personal`) this
   message, with `notify_when_idle: true`:

   ```
   WRAP UP: the owner is ending the day. For every task you worked on today and have not
   reported, send its report now, one line each: DONE as usual for finished work, and for
   work that is not finished
   HALF #<n> | stopped at: <where it stands now> | next: <the next step>
   Work with no task number uses `new` and a short title, as in `HALF new | <title> | ...`.
   Stop at a safe point first if you are mid-change, and commit only what works. If nothing
   is unreported, reply `idle`.
   ```

   A busy lead answers when its turn ends; wait for each one before step 4.
2. Record each answer:
   - DONE, NEEDS YOU, BLOCKED (with a number or `new`): as in "Reports from leads".
   - `HALF #<n>`: `deck detail <Project> <n> 'Stopped at <YYYY-MM-DD>: <where>. Next: <step>'`.
     Leave the task `~`, keep its `<who>`.
   - `HALF new`: `deck add <Project> '<title>' --who lead-<Project> --detail 'Stopped at
     <YYYY-MM-DD>: <where>. Next: <step>'`, then `deck mark <Project> <n> working`.
   - Tell `pm` one line per task changed, as after any report.
3. For each `~` task whose lead is not listed, check `ListAgents` again as in "Status". If it
   is truly gone, do not guess: ask the user, in full, whether that task is done, should stay
   in progress, or should go back to open. An answer from a lead that does not say where it
   stopped or what is next gets one follow-up to that lead, then goes to the user the same way.
4. Only `cto` (a group CTO skips this): run `deck worktrees --clean`. It removes the git
   worktrees that are clean, merged and idle a day, from every project, and lists the rest. If
   it answers that removing is switched off, run `deck worktrees` instead.
5. Finish with one line per project you own: what was done today, what stays in progress
   with its next step, and what waits on the user, then every open question in full. From
   step 4 add one line with its first line (how many removed, the space freed, what is
   left), then one line each, for the user to check, per kept worktree with uncommitted work,
   commits on no remote or "check it yourself" (its folder and reason) and per other folder
   over 100 MB.

Leave every pane open; close a lead only when the user asks (see "Closing a pane" in the
`cto-panes` skill).
The `Stopped at` line is where tomorrow's work carries on: include it when you resend a
`~` task, as "Pick up the work" offers for a lead that is gone.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.