github/desk-open
Create and open a new desk in the workshop. Sets up the folder structure, initial journal, and desk identity so the next session that sits down finds the trail.
npx skills add https://github.com/github/awesome-copilot --skill desk-open
Create a new desk in the workshop with the standard structure.
Given a workshop directory and a desk name, create:
desks/<desk-name>/
journal.md # persistent memory — read at start, written at end
.signals/ # structured signal output (JSON) — dashboard reads this
how the operator and other desks refer to this desk.
Examples: security-scan, api-review, ops, cloud-workshop
desks/<desk-name>/ alreadyhas a journal.md, the desk is live — do not overwrite it.
Instead, resume it: read the journal and continue from where it
left off. If the operator explicitly wants a fresh start, they
must rename or archive the existing desk first.
and signals folder:
desks/<desk-name>/journal.md
desks/<desk-name>/.signals/
the desk's focus is.
This skill initializes storage — it does not launch a session.
A desk becomes active when a Copilot session references its
directory. The session workflow:
<desk-name> desk"
desks/<desk-name>/journal.md to load priorssignal-write to emit signalsand desk-journal to persist state at the end
The desk identity comes from which journal is read, not from a
persistent process. Desks are long-running in *state* (the journal
carries forward), not in *runtime* (each session is independent).
# <Desk Name> — Journal
## <date> — Desk opened
- **Purpose:** <what this desk focuses on>
- **Scope:** <repos, areas, or work this desk covers>
- **Next step:** <what the first session should do>
disagree with other desks.
blind. Write enough that someone starting from zero finds the way.
Each desk's value comes from its specific frame — dilute the
frame and you lose the value.
Take github/desk-open from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.