workspace-api
Create, list, update, delete, and clean up workspaces via the daemon HTTP API at $FRIDAYD_URL. Use when the user asks to create, edit, delete, or list workspaces, spaces, projects, or environments; add or patch signals / agents / jobs / memory / skills; convert a workspace.yml into a live workspace; wire up triggers (HTTP webhooks, cron, fs-watch, Slack / Telegram / WhatsApp); or clean up test/scratch workspaces.
npx skills add friday-platform/friday-studio --skill workspace-api --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Create and manage Friday workspaces. This skill orchestrates building or modifying workspaces by interacting with the daemon HTTP API to create, list, update, delete, and draft workspaces, including agents, jobs, signals, and memory stores, and to validate and publish changes.
How it works
- It prescribes resolving the daemon URL from the FRIDAYD_URL environment variable, and always using curl -k for daemon calls.
- It outlines a 7-step recipe for workspace changes:
- List capabilities with list_capabilities to choose suitable bundled or MCP-enabled components.
- Wire capabilities based on kind: bundled → upsert_agent with type: atlas, agent: "<id>"; mcp_enabled → use wired tools; mcp_available → enable_mcp_server first.
- Connect credentials with connect_service(provider) if required by enabled servers.
- Choose direct vs draft mode: direct for single atomic changes; draft for multi-entity builds, starting with begin_draft when needed.
- Upsert in dependency order: upsert_agent, upsert_job, upsert_signal; pass workspaceId when targeting a new workspace; read diff and fix structural_issues if present.
- Validate with validate_workspace and fix errors before publishing; warnings may be acknowledged.
- Publish with publish_draft if in draft mode after user confirmation; otherwise direct changes apply immediately.
- It defines a set of tool interactions: write_file for workspace.yml edits, run_code for daemon HTTP operations, and MCP tooling workflows via using-mcp-servers and list_mcp_tools.
- It emphasizes a reachability model where signals trigger jobs, which invoke agents that use MCP tools.
When to use it
- Use when the user asks to create, edit, delete, or list workspaces, spaces, projects, or environments; add or patch signals/agents/jobs/memory/skills; convert workspace.yml into a live workspace; wire up triggers; or clean up test/scratch workspaces.
- Use draft mode for creating new workspaces or pipelines, or restructuring an FSM; use direct mode for single atomic changes.
What it can touch
- Daemon HTTP API via curl (with -k).
- Workspace operations: create_workspace, begin_draft, upsert_agent, upsert_job, upsert_signal, upsert_memory_own, upsert_memory_mount, delete_agent, delete_signal, delete_job, validate_workspace, publish_draft, discard_draft.
- Memory stores: upsert_memory_own, upsert_memory_mount.
- Skills and MCP: list_capabilities, list_mcp_tools, connect_service, enable_mcp_server, using-mcp-servers, list_skills, describe_skill, assign_workspace_skill, unassign_workspace_skill, load_skill.
- Code edits: agent_claude-code, write_file, run_code.
Caveats
- Daemon URL must be resolved from environment variable FRIDAYD_URL; do not rely on user-provided shell values.
- -k is required for TLS self-signed certificates when contacting the daemon.
- Validation results distinguish between errors (block publishing) and warnings (non-blocking); fix errors before publishing.
- Draft mode is opt-in and requires begin_draft; publishing may fail if the draft fails quality gates.
# Workspace API Create and manage Friday workspaces. This skill is where LLM judgment lives: when to use each tool, in what order, and how to recover when stuck. Companion skills: `friday-cli` (daemon lifecycle, signals, sessions) and `using-mcp-servers` (MCP catalog, install/enable, credentials). ### Daemon HTTP rules (load-bearing for every curl example below) 1. **Resolve `$FRIDAYD_URL` first, then emit the literal value.** `$FRIDAYD_URL` lives in the daemon's process env — not in the user's shell. If you show them `curl "$FRIDAYD_URL/..."`, they'll paste it into a shell where the variable is empty and get `URL rejected: No host part in the URL`. Look up the actual value once via `run_code`, then substitute: ```python import os print(os.environ["FRIDAYD_URL"]) ``` That prints a URL like `https://localhost:18080` (installed Studio with TLS) or `http://localhost:8080` (in-tree dev). Use the returned string as a literal in the curl. Ignore any host/port the user mentions in their message — your daemon env is the source of truth. **Worked example.** `os.environ["FRIDAYD_URL"]` returns `https://localhost:18080`. User asks "list workspaces": - ❌ Wrong: `curl -k "$FRIDAYD_URL/api/works
- Daemon HTTP rules (load-bearing for every curl example below)
- Cheat sheet
- Reachability model — the runtime call chain
- Recipe: build or modify a workspace
- 1. List available capabilities
- 2. Wire capabilities
- 2b. Discover tool names
- 3. Connect credentials
- 4. Decide direct vs draft mode
- 5. Upsert in dependency order
- 6. Validate
- 7. Publish (draft only)
- Direct mode vs draft mode — full behavior
- Tool selection — when to use what
set -a set +a curl -k -sf "$FRIDAYD_URL/health" && echo OK curl -k -s "$FRIDAYD_URL/api/workspaces" | jq curl -k -s "$FRIDAYD_URL/api/workspaces" | \ jq -r '.[] | select(.name == "my-workspace") | .id' Summary (id, name, status, path) curl -k -s "$FRIDAYD_URL/api/workspaces/$WS" | jq Full parsed config curl -k -s "$FRIDAYD_URL/api/workspaces/$WS/config" | jq
What does the workspace-api skill do?
Create, list, update, delete, and clean up workspaces via the daemon HTTP API at $FRIDAYD_URL. Use when the user asks to create, edit, delete, or list workspaces, spaces, projects, or environments; add or patch signals / agents / jobs / memory / skills; convert a workspace.yml into a live workspace; wire up triggers (HTTP webhooks, cron, fs-watch, Slack / Telegram / WhatsApp); or clean up test/scratch workspaces.
How do I install it?
Run `npx skills add friday-platform/friday-studio --skill workspace-api --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From friday-platform/friday-studio, a repository with 98 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.