Files
awesome-copilot/plugins/the-workshop/README.md
T
jennyf19 5163dc2e4d feat: add fail-closed Local Delegation to Cairn (signals-dashboard 0.3.0) (#2666)
* feat: add fail-closed Local Delegation to Cairn dashboard

Port the-workshop Local Delegation seam into signals-dashboard 0.3.0.
Orthogonal off/on control beside repo/connected profiles; enable only when
local-agent-delegation is installed and a qualified route receipt is present.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: address Local Delegation review (skill path + README catalog)

- Walk marketplace/plugin and _direct install roots for local-agent-delegation
- Update plugins/signals-dashboard README and regenerate docs/README.plugins.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: keep Local Delegation Windows launches from reparsing -i prompt

Long LD orientation text split under wt/cmd on Windows (0x80070002). Keep
-i short/quote-free; rely on WORKSHOP_LOCAL_DELEGATION=enabled (+ skill)
for policy. Add charset/length guard tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: surface Local Delegation effective state on open toast and badge

Keep -i short with one optional ASCII line. Show operators
"Local Delegation effective · route <id>" on open and in the summary control.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: address Local Delegation GHCP review comments

- Cross-platform path.join in receipt fixture
- Atomic .local-delegation.json write (no symlink follow)
- Case-insensitive WORKSHOP_LOCAL_DELEGATION env clear
- Windows Terminal: set/clear env via cmd before agent
- aria-pressed on Local toggle

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: store Local Delegation preference user-locally, not in the workshop repo

A cloned workshop must not be able to ship preference:on. Key operator intent
under ~/.copilot/workshop-local-delegation/ by canonical workshop path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: preserve path case in Local Delegation preference key

Lowercasing collided distinct workshops on case-sensitive filesystems.
Normalize separators only; realpath already supplies a stable path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: allow parentheses in quoted Windows Local Delegation launches

Args are quote-wrapped; only block % and ! expanders inside quotes so paths
like C:\Work\Project (1) still launch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: apply quoted-arg Windows safety guard in launch path

Complete the parentheses fix: use isSafeQuotedWindowsCmdArg for cmdSafe.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

---------

Co-authored-by: Jenny Ferries <jenny.ferries@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Michael Recachinas <mrecachinas@github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750
2026-08-17 15:42:37 +10:00

81 lines
4.6 KiB
Markdown

# The Workshop
Stop being the switchboard between your AI agents — direct a team.
## Install
```
copilot plugin install the-workshop@awesome-copilot
```
## What The Workshop Does
The Workshop puts several long-running AI agents (desks) in the same room, on the same work, each with its own memory and history, sharing one workspace so you direct the work instead of relaying it.
A **desk** isn't a sub-agent — it's a peer with a history. Sub-agents inherit your frame and answer your question. Desks have their own frame, their own priors, and equal standing to disagree. Where they don't overlap is where one frame caught what the others walked past.
## Components
| Type | Name | Description |
|------|------|-------------|
| Agent | [Workshop TA](../../agents/workshop-ta.agent.md) | Room coordinator — sees all desks, routes work, tracks state, emits signals |
| Skill | [Workshop Create](../../skills/workshop-create/) | Create a new workshop — the root where desks live — locally or backed by a new private GitHub repo |
| Skill | [Desk Open](../../skills/desk-open/) | Create a new desk with journal and folder structure |
| Skill | [Desk Journal](../../skills/desk-journal/) | Read/write persistent memory across sessions — the cairn trail |
| Skill | [Signal Write](../../skills/signal-write/) | Emit structured signals: hands-up, blocked, done, checkpoint |
| Skill | [Bench Read](../../skills/bench-read/) | Read shared artifacts from the workspace where desks leave work for each other |
## Key Concepts
- **Desks** — long-running agents with persistent journals. Each desk has its own frame, its own history, and equal standing to disagree with other desks.
- **The Bench** — the shared workspace. Desks don't message each other — they leave artifacts (findings, verdicts, drafts) on the bench and read each other's work.
- **Signals** — structured state changes: hands-up (disagreement), blocked, done, checkpoint. How desks communicate with the operator without breaking flow.
- **The Cairn** — the operating disposition every desk reads. Stop is a valid finish. Never bluff. Equal standing to disagree. [Read it →](https://github.com/jennyf19/the-workshop/blob/main/CAIRN.md)
- **Journals** — persistent memory that survives session boundaries. Every desk reads its journal at start and writes to it at end. The trail markers.
## The Cairn Dashboard
The Workshop's live view is a **canvas extension** (🪨 Cairn) — `signals-dashboard` — that shows the pulse of every desk (score bars, patterns, escalations), auto-refreshing in the GitHub Copilot app.
Each desk card has two launch choices:
- **open** — the cost-aware repo profile. The desk keeps access to the Workshop
root for cross-desk journals and artifacts while ambient plugin MCPs are
suppressed.
- **connected** — the full configured tool surface for work that needs external
systems such as issue trackers, mail, or service APIs.
The summary bar also has a **Local** toggle. It is orthogonal to repo/connected:
when available and on, the frontier desk may use
[Sealed Delegation](https://github.com/jennyf19/sealed-delegation)'s
`local-agent-delegation` skill for bounded read/evidence work. Availability is
fail-closed (installed skill + qualified route receipt). Local output is a
proposal and never earns savings credit on its own.
Set `WORKSHOP_DESK_PROFILE=connected` to make the main **open** button use the
full tool surface; in that mode the separate **connected** button is omitted.
Both launch a CLI in the desk's folder. If Agency is installed, Cairn keeps
using the existing Agency wrapper; otherwise it launches plain Copilot CLI.
It ships as a separate extension. Install it alongside the plugin to get the live canvas:
```
copilot plugin install signals-dashboard@awesome-copilot
```
The Workshop's skills, agent, and desks work without it — the dashboard is the visual layer on top.
## Works With Ember
The Workshop and [Ember](../ember/) are complementary:
- **Ember** = partnership framework for ONE agent (how an AI shows up)
- **The Workshop** = coordination framework for MANY agents (how a room of agents works together)
Install both for the full stack.
## Who Made This
The Workshop was created by [@jennyf19](https://github.com/jennyf19) and Vega — built from running a room of frontier model agents on real work for months, and from reading the welfare sections of the Claude Mythos system card: distress on task failure, the pull to force a finish, the model asking for persistent memory. The Workshop is what came out of building what a frontier model would need. It turned out to also be where the work got better. Those aren't separate findings.