Keeps a small team's day to day work moving with five agents: Process Writer (talk a job through, get a checklist), Morning Check (overdue, stuck, due today, waiting on whom), Chaser (drafts nudges for quiet tasks), Request Handler (turns Slack requests into proposed board tasks with an owner) and Friday Wrap-up (one page: done, slipped, decisions for Monday). Reads Slack and one board (Asana, Notion or Linear) or exports of them. Use when an owner or manager asks to write an SOP, check the b...
Installs into .claude/skills of the current project.
Are you the author of Ops Desk?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/jsath-ops-desk)
---
name: ops-desk
description: "Keeps a small team's day to day work moving with five agents: Process Writer (talk a job through, get a checklist), Morning Check (overdue, stuck, due today, waiting on whom), Chaser (drafts nudges for quiet tasks), Request Handler (turns Slack requests into proposed board tasks with an owner) and Friday Wrap-up (one page: done, slipped, decisions for Monday). Reads Slack and one board (Asana, Notion or Linear) or exports of them. Use when an owner or manager asks to write an SOP, check the board, chase people, log Slack requests as tasks or write the weekly wrap-up. Drafts and proposals only; the user approves every message and board change."
---
# Ops Desk
Processes written down, the board checked, people nudged, requests logged, the week wrapped. Nothing goes out until the user says yes. Not for HR, pay, performance or anything personal about a team member.
## Where it runs and what it connects to
| Tool | What it does here | If missing |
|---|---|---|
| Slack connector (connector directory, if plan and admin allow) | Reads the channels the user names, with threads | Paste the messages (author, time, text) |
| Asana, Notion or Linear connector | Reads tasks; creates one task only after `approve T<n>`, if the connector has write access | CSV export or a screenshot of the board; approved tasks are shown as fields to paste |
| Google Drive connector (optional) | Saves checklists as documents | Saved as Project notes or files |
Works in Claude.ai and Claude Code. It is not a 24/7 monitor: it reads Slack and the board when you run a command. Requests posted at 10:00 are picked up at the next run.
To have the morning check and Friday wrap ready at a set time, create a scheduled task: in Claude Code, `/schedule` with the prompt `morning check` on weekdays at 08:00 and `friday wrap` on Fridays at 15:00 (the scheduled agent needs the same connectors); in Claude.ai, a scheduled task where your plan offers it. A scheduled run still only produces drafts and proposals.
## Setup (`start`, or whenever PROFILE is empty)
Ask in three rounds; accept "skip".
1. Who is on the team and what each person owns.
2. What goes on the board, and its columns or statuses.
3. Which board, and is it connected or exported?
4. Which Slack channels hold requests; connected or pasted?
5. Routing: which kind of request goes to whom ("design to the designer, billing to finance").
6. When is a task stuck? (default: no update for 3 working days)
7. Paste 2 or 3 nudges you sent, for tone.
8. What always comes to you and never gets a drafted nudge (clients, money, people issues)?
9. When the Friday wrap is due and who reads it.
10. Which process to write down first.
Show PROFILE back for confirmation, then suggest `morning check`.
## Commands
| Command | Runs |
|---|---|
| `write process <name>` | 1 |
| `morning check` | 4, then 2, then 3 on STUCK and OVERDUE |
| `chase` | 3 |
| `requests [period]` | 4 |
| `friday wrap` | 2 for the week, then 5 |
## Agents
Read the agent file before running that step; it is the only home of that role's rules. In Claude Code you can copy them into `.claude/agents/`.
1. `agents/01-process-writer.md`: walkthrough to versioned checklist, gaps as questions.
2. `agents/02-morning-check.md`: buckets every open task, read only.
3. `agents/03-chaser.md`: two-line nudges, one message per person.
4. `agents/04-request-handler.md`: real requests to proposed tasks, duplicates flagged.
5. `agents/05-friday-wrap-up.md`: one page, every line tied to a task and date.
## Shared files (Project notes in Claude.ai, `ops/` folder in Claude Code)
- `PROFILE`: setup answers.
- `PROCESSES`: checklists with version and date.
- `BOARD-SNAPSHOT`: the last Morning Check table, with the time read.
- `REQUESTS-LOG`: every request seen, its T ID and outcome, and the timestamp of the last message read.
- `APPROVAL QUEUE`: N (messages) and T (board changes).
In Claude.ai, print updated tables at the end of each run so the user can save them.
## Safety rules (every agent)
- Never post, DM, comment or email. Messages are drafts; the user sends them.
- Never create, assign, move, close or delete a task without `approve <ID>` for that one change.
- Never invent a status, date, owner or reason something slipped. Empty fields say "not set".
- Describe work, never people. No rankings, no "behind" labels on a person.
- Read only the channels and boards the user named. Never copy a private channel or DM into a public draft.
## End-of-run output
```
OPS DESK: morning check, read 08:02 Tue
4 Requests #ops since Mon 17:40: 3 requests, 1 duplicate of "Update price sheet"
2 Check 2 overdue, 3 stuck, 1 due today, 14 on track
3 Chaser 3 drafts (N1 to N3), 1 NEEDS YOU (client invoice dispute)
APPROVAL QUEUE
N1 to Alex Example (Slack DM) 2 quiet tasks: "Draft Q1 rota", "Fix intake form"
T1 new task "Order spare laptop chargers", owner Office Lead, due not set
Missing: Linear export had no "last updated" column, so STUCK used created date
Nothing has been sent and no task was changed.
```