### Quickstart: Install and Screenshot Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/SKILL.md Demonstrates how to install agent-browser globally and take a screenshot of a webpage. ```bash # Install once npm i -g agent-browser && agent-browser install # Take a screenshot of a page agent-browser open https://example.com agent-browser screenshot home.png agent-browser close ``` -------------------------------- ### Quickstart: Search, Click, and Capture Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/SKILL.md Guides through searching on a website, clicking a result, and capturing a screenshot of the result page. ```bash agent-browser open https://duckduckgo.com agent-browser snapshot -i # find the search box ref agent-browser fill @e1 "agent-browser cli" agent-browser press Enter agent-browser wait --load networkidle agent-browser snapshot -i # refs now reflect results agent-browser click @e5 # click a result agent-browser screenshot result.png ``` -------------------------------- ### Atlas CLI Basic Workspace Operations Example Source: https://github.com/friday-platform/friday-studio/blob/main/apps/atlas-cli/src/claude.md Demonstrates initializing a new workspace, navigating into its directory, starting the Atlas daemon, and checking the workspace status. ```bash # Initialize and start a workspace atlas workspace init my-project cd my-project atlas daemon start # Check status atlas workspace status ``` -------------------------------- ### Install and Use agent-browser CLI Source: https://github.com/friday-platform/friday-studio/blob/main/README.md Install the agent-browser CLI for web scraping and use it to monitor competitor pricing. This example shows the installation command. ```bash npm i -g agent-browser && agent-browser install ``` -------------------------------- ### Clone and Install Friday Studio Source: https://github.com/friday-platform/friday-studio/blob/main/README.md Clones the Friday Studio repository and runs the setup script to bootstrap development environment tools. ```bash git clone https://github.com/friday-platform/friday-studio cd friday-studio bash scripts/setup-dev-env.sh # bootstraps deno+go+uv+nats+agent-browser, runs deno install, pre-warms Python ``` -------------------------------- ### Start LiteLLM Proxy with API Keys Source: https://github.com/friday-platform/friday-studio/blob/main/tools/evals/promptfoo/litellm/README.md Set necessary API keys and run the start script to launch the LiteLLM proxy. The proxy will listen on http://localhost:4000. ```bash export ANTHROPIC_API_KEY=sk-ant-... export GROQ_API_KEY=gsk_... export LITELLM_MASTER_KEY=sk-friday-evals-dev export LITELLM_API_KEY="$LITELLM_MASTER_KEY" # runner uses same bearer the proxy validates ./start.sh # proxy listening on http://localhost:4000 ``` -------------------------------- ### Start MCP Servers and Get Tools Source: https://github.com/friday-platform/friday-studio/blob/main/tools/agent-playground/README.md Starts MCP servers in-process and returns their tool definitions. These connections are ephemeral. ```APIDOC ## POST /api/mcp/tools ### Description Start MCP servers in-process, return tool definitions. Connections are ephemeral. ### Method POST ### Endpoint /api/mcp/tools ``` -------------------------------- ### Workspace Configuration Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/workspace-api/SKILL.md This example demonstrates various configuration options for permissions, delegation, artifacts, and memory settings within a workspace.yml file. It includes comments explaining defaults, overrides, and best practices. ```yaml # ── Workspace-level defaults (top of workspace.yml) ──────────── permissions: # Bypass tool/skill allowlist enforcement. When true, NO elicitations # fire — the elicitation flow and bypass are mutually exclusive. # Trusted contexts only. Job-level setting wins; daemon # FRIDAY_DANGEROUSLY_SKIP_PERMISSIONS=1 env var is the floor. dangerouslySkipAllowlist: false delegation: # Per-field merge with per-job override. Job wins per-field; unset # fields fall through to workspace, then to runtime defaults. max_depth: 1 # default 1; child cannot itself delegate max_steps_per_call: 40 max_output_tokens: 20000 max_input_tokens: 100000 max_wall_time_ms: 120000 max_cost_usd: null # reserved; not enforced until cost-tracking lands artifacts: # Workspace-level grace window after job completion before ephemeral # artifacts are swept. Default '24h'. Promotion-by-reference # (save_memory_entry text containing the id, display_artifact, or # aiSummary.keyDetails[].url) keeps an artifact past the window. default_grace: 24h memory: own: - name: notes type: short_term # ephemeral session-bound strategy: narrative # ttl: 7d # OPTIONAL: explicit TTL overrides the # type-default. With ttl set, type # becomes advisory. - name: memory type: long_term # durable across sessions strategy: narrative ``` -------------------------------- ### Atlas CLI Session Management Example Source: https://github.com/friday-platform/friday-studio/blob/main/apps/atlas-cli/src/claude.md Provides examples for listing all active sessions, retrieving details for a specific session, and following session logs in real-time. ```bash # Monitor sessions atlas ps # List all sessions atlas session get sess_123 # Get specific session atlas logs sess_123 --follow # Follow session logs ``` -------------------------------- ### Start Svelte library development server Source: https://github.com/friday-platform/friday-studio/blob/main/packages/ui/README.md Run 'npm run dev' to start the development server. Use '-- --open' to automatically open the application in a new browser tab. ```sh npm run dev # or start the server and open the app in a new browser tab npm run dev -- --open ``` -------------------------------- ### Snapshot Output Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/SKILL.md An example of the structured output format from the `agent-browser snapshot` command, showing element references and types. ```text Page: Example - Log in URL: https://example.com/login @e1 [heading] "Log in" @e2 [form] @e3 [input type="email"] placeholder="Email" @e4 [input type="password"] placeholder="Password" @e5 [button type="submit"] "Continue" @e6 [link] "Forgot password?" ``` -------------------------------- ### Get Provider Details Source: https://github.com/friday-platform/friday-studio/blob/main/apps/link/README.md API endpoint to retrieve schema and setup instructions for a specific provider. ```bash # Get provider details (schema, setup instructions) GET /v1/providers/:id ``` -------------------------------- ### Example Provider Configuration Source: https://github.com/friday-platform/friday-studio/blob/main/tools/evals/promptfoo/README.md An example of a provider entry in `shared/providers.yaml` with a tier tag in its label. ```yaml - id: openai:chat:friday-sm label: 'groq-8b (openai) | tier:small' ``` -------------------------------- ### Basic Profiling Steps Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/profiling.md Start profiling, perform actions, and then stop and save the trace to a file. ```bash # Start profiling agent-browser profiler start # Perform actions agent-browser navigate https://example.com agent-browser click "#button" agent-browser wait 1000 # Stop and save agent-browser profiler stop ./trace.json ``` -------------------------------- ### Start LiteLLM Proxy Source: https://github.com/friday-platform/friday-studio/blob/main/tools/evals/promptfoo/README.md Start the LiteLLM proxy once to route requests to real providers. Ensure environment variables are set as per `litellm/README.md`. ```bash cd tools/evals/promptfoo/litellm && ./start.sh ``` -------------------------------- ### Function Wrapping Suite Setup Source: https://github.com/friday-platform/friday-studio/blob/main/tools/evals/promptfoo/README.md Illustrates the setup for a function-wrapping suite where a 'render.ts' file is used to define test cases by spawning a Deno child process. ```typescript import { spawnSync } from "child_process"; // ... other imports export default function() { const result = spawnSync("deno", ["eval", ...]); // ... process result and return TestCase[] } ``` -------------------------------- ### Start Friday Studio Daemon Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/cli.md Starts the Friday Studio HTTP server. Use --detached to run in the background. Exits with an error if the daemon is already running or the specified port is unavailable. ```bash atlas daemon start [--port 8080] [--hostname 127.0.0.1] [--detached] [--max-workspaces 10] [--idle-timeout 300] [--log-level info] [--atlas-config ] ``` -------------------------------- ### Start Link Service Source: https://github.com/friday-platform/friday-studio/blob/main/apps/link/CLAUDE.md Use `deno task start` to run the Link service on port 3100. Other development tasks include `dev` for watch mode, `test` for running tests, and `check` for type checking. ```bash deno task start ``` ```bash deno task dev ``` ```bash deno task test ``` ```bash deno task test tests/oauth.test.ts ``` ```bash deno task check ``` -------------------------------- ### daemon start Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/cli.md Starts the HTTP server. Can run in the foreground or detached. Exits with an error if the daemon is already running or the port is unavailable. ```APIDOC ## daemon start ### Description Starts the HTTP server. `--detached` forks and returns; otherwise runs in foreground. Exits 1 if already running or port unavailable. With `FRIDAY_KEY` set, fetches credentials and re-execs with OTEL env. ### Method `daemon start [--port 8080] [--hostname 127.0.0.1] [--detached] [--max-workspaces 10] [--idle-timeout 300] [--log-level info] [--atlas-config ]` ### Aliases `daemon run` ``` -------------------------------- ### Declare Script Dependencies Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/scripts.md List all required packages in SKILL.md and provide installation instructions. The execution environment may not have network access to install packages at runtime. ```bash pip install pypdf ``` ```bash python scripts/extract_pdf.py input.pdf ``` -------------------------------- ### Atlas CLI Agent Management Example Source: https://github.com/friday-platform/friday-studio/blob/main/apps/atlas-cli/src/claude.md Illustrates how to discover agents, view their details, and test their connectivity. ```bash # Discover and test agents atlas agent list atlas agent describe k8s-agent atlas agent test k8s-agent ``` -------------------------------- ### Example SDK Version Pin Drift Detection Source: https://github.com/friday-platform/friday-studio/blob/main/UPDATING-AGENT-SDK.md This is an example of the output when a drift in SDK version pins is detected across different files. It highlights which files have differing versions. ```text ✗ SDK version pin drift detected: launcher (paths.go): X.Y.Z Dockerfile: A.B.C installer (prewarm_agent_sdk.rs): X.Y.Z ``` -------------------------------- ### File Output (JSON) Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/logger/README.md Example of a log entry formatted as JSON, suitable for disk storage and machine parsing. Includes timestamp, level, message, process ID, hostname, and context. ```json { "timestamp": "2025-07-31T18:29:50.330Z", "level": "info", "message": "User authenticated", "pid": 1234, "hostname": "hostname", "context": { "userId": "123", "sessionId": "abc" } } ``` -------------------------------- ### Good Description Example for Spreadsheet Skill Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/frontmatter.md This example demonstrates how to describe a skill that analyzes spreadsheet data, specifying file extensions and use cases. ```yaml description: Analyzes Excel spreadsheets, creates pivot tables, generates charts. Use when analyzing .xlsx files, spreadsheets, or tabular data. ``` -------------------------------- ### Start Agent Playground Source: https://github.com/friday-platform/friday-studio/blob/main/tools/agent-playground/README.md Run the Agent Playground from the monorepo root. Access the UI at http://localhost:5200. ```bash deno task playground # from monorepo root — starts on http://localhost:5200 ``` -------------------------------- ### Example of Debugging Empty Output Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/debugging-broken-jobs/SKILL.md This example demonstrates the expected interaction flow when a job tool returns an empty output signature. The assistant recognizes the symptom and loads the 'debugging-empty-output' skill, then proceeds to diagnose the agent's behavior based on the session's tool calls and contract adherence. ```text USER: run stale ASSISTANT [calls workspace job tool] JOB TOOL: { success: true, status: completed, summary: "", artifactIds: [] } ASSISTANT [recognizes empty-output signature] ASSISTANT [load_skill: debugging-empty-output] ASSISTANT [calls describe_session(sessionId)] ASSISTANT [reads agentBlocks[0].toolCalls] ASSISTANT [observes complete was not called; agent emitted text only] ASSISTANT: The job ran successfully but the agent emitted prose without calling `complete`. Per the `@friday/agent-action-handshake` contract, an `outputTo` action requires the agent to call complete with the final text. Fix the agent's prompt to instruct it explicitly. ``` -------------------------------- ### Console Log Output Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/logger/README.md Example of how log messages appear in the console, including timestamps, log levels, component names, and context. Colors are automatically applied based on log level and TTY detection. ```text [18:29:50.330] INFO (atlas): User authenticated {"userId":"123","sessionId":"abc"} [18:29:50.331] ERROR (atlas): Database connection failed {"error":"timeout","retries":3} [18:29:50.332] INFO (atlas:worker): Task completed {"workerId":"worker-1","workspaceId":"ws-123"} ``` -------------------------------- ### Run Link Service and Tests Source: https://github.com/friday-platform/friday-studio/blob/main/apps/link/README.md Commands to start the Link service and run its tests using Deno tasks. ```bash # Run the service deno task start ``` ```bash # Run tests deno task test ``` -------------------------------- ### Initialize and Start Agent Server Source: https://github.com/friday-platform/friday-studio/blob/main/packages/core/src/agent-server/README.md Instantiate and start the AtlasAgentsMCPServer. It requires an agent registry, logger, port, and daemon URL. The server exposes agents as MCP tools. ```typescript import { AtlasAgentsMCPServer } from "@atlas/agent-server"; import { MyAgentRegistry } from "./my-registry.ts"; import { AtlasLogger } from "@atlas/core"; import { getAtlasDaemonUrl } from "@atlas/oapi-client"; // Create the MCP server. getAtlasDaemonUrl() picks the right scheme/port // from FRIDAYD_URL + FRIDAY_TLS_CERT so the server works on plain-HTTP and // TLS-enabled installs without per-env config. const server = new AtlasAgentsMCPServer({ agentRegistry: new MyAgentRegistry(), logger: AtlasLogger.getInstance(), port: 8082, daemonUrl: getAtlasDaemonUrl(), }); // Start the server await server.start(); // Server exposes agents as MCP tools // Clients can call agents like: client.callTool("github", { prompt: "scan my repo" }) ``` -------------------------------- ### Profiler Commands: Start and Stop Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/profiling.md Initiate profiling with default or custom categories, and stop to save the trace data. ```bash # Start profiling with default categories agent-browser profiler start # Start with custom trace categories agent-browser profiler start --categories "devtools.timeline,v8.execute,blink.user_timing" # Stop profiling and save to file agent-browser profiler stop ./trace.json ``` -------------------------------- ### Basic Logging Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/logger/README.md Log messages with different levels and associated context. Ensure you have imported the logger instance. ```typescript import { logger } from "@atlas/logger"; logger.info("User authenticated", { userId: "123", sessionId: "abc" }); logger.error("Database connection failed", { error: "timeout", retries: 3 }); logger.debug("Processing request", { requestId: "req-456" }); ``` -------------------------------- ### GET Request with Path Parameters Source: https://github.com/friday-platform/friday-studio/blob/main/packages/client/README.md Example of performing a GET request to the chat storage endpoint, including a path parameter for the stream ID. Use parseResult for error handling. ```typescript const result = await parseResult( client.chatStorage[":streamId"].$get({ param: { streamId: "abc-123" }, }), ); ``` -------------------------------- ### Local Development Setup Source: https://github.com/friday-platform/friday-studio/blob/main/tools/pty-server/README.md Steps to set up the local development environment, including compiling the atlas binary and ensuring it's in the PATH. ```bash deno task compile # produces ./bin/atlas export PATH="$PWD/bin:$PATH" deno task playground # cheatsheet terminal will pick it up ``` -------------------------------- ### Generating Documentation Videos Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/video-recording.md Create video documentation of user workflows. This example demonstrates recording a login process with pauses to make the steps clear for viewers. ```bash #!/bin/bash # Record workflow for documentation agent-browser record start ./docs/how-to-login.webm agent-browser open https://app.example.com/login agent-browser wait 1000 # Pause for visibility agent-browser snapshot -i agent-browser fill @e1 "demo@example.com" agent-browser wait 500 agent-browser fill @e2 "password" agent-browser wait 500 agent-browser click @e3 agent-browser wait --load networkidle agent-browser wait 1000 # Show result agent-browser record stop ``` -------------------------------- ### Memory Injection Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/writing-to-memory/SKILL.md Memory entries are automatically injected into the system prompt at the start of each turn, formatted as XML. This shows the structure of injected memory. ```xml - Always archive newsletters from substack.com (2026-04-15) - GitHub CI failures → keep unread ``` -------------------------------- ### Multi-tenant Environment Setup Source: https://github.com/friday-platform/friday-studio/blob/main/ENVIRONMENTS.md Configure distinct home directories and HTTP/UI ports for multiple Friday instances on the same host. Each instance requires a unique FRIDAY_HOME and specific FRIDAY_PORT_* values in its .env file. ```shell ~/.friday/work/.env FRIDAY_PORT_FRIDAY=18080 ... ~/.friday/personal/.env FRIDAY_PORT_FRIDAY=18180 ... ``` -------------------------------- ### Loading Specific Agent Browser Skills Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/SKILL.md Use the `agent-browser skills get` command to load skills tailored for different environments. For example, use `electron` for desktop apps and `slack` for workspace automation. ```bash agent-browser skills get electron ``` ```bash agent-browser skills get slack ``` ```bash agent-browser skills get dogfood ``` ```bash agent-browser skills get vercel-sandbox ``` ```bash agent-browser skills get agentcore ``` -------------------------------- ### Basic Video Recording Workflow Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/video-recording.md Start a video recording, perform automation actions, and then stop the recording to save the video file. ```bash # Start recording agent-browser record start ./demo.webm # Perform actions agent-browser open https://example.com agent-browser snapshot -i agent-browser click @e1 agent-browser fill @e2 "test input" # Stop and save agent-browser record stop ``` -------------------------------- ### Defining Structured Output Type with JSON Schema Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/agent-action-handshake/SKILL.md When outputType is set to a document name, the runtime uses the specified JSON Schema to validate the LLM's output. Ensure the agent's prompt or examples guide the LLM to produce data matching the schema. ```yaml documentTypes: EmailDraft: type: object properties: to: { type: string } subject: { type: string } body: { type: string } required: [to, subject, body] states: drafting: entry: - type: agent agentId: drafter outputTo: draft outputType: EmailDraft ``` -------------------------------- ### Build and Publish Studio/Installer Script Source: https://github.com/friday-platform/friday-studio/blob/main/scripts/README.md A versatile script for building (uploading versioned artifacts) and publishing (updating manifest.json) studio or installer components. Use --watch to block until the run completes and prints the publish command. ```bash ./scripts/studio-release.sh build studio --watch ``` ```bash ./scripts/studio-release.sh build installer --watch ``` ```bash ./scripts/studio-release.sh publish studio ``` ```bash ./scripts/studio-release.sh publish installer ``` ```bash ./scripts/studio-release.sh publish studio 1234567890 ``` -------------------------------- ### Guard Daemon Status and Start Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/cli.md Checks the status of the atlas daemon and starts it in detached mode if it's not running. ```bash # Guard daemon deno task atlas daemon status || deno task atlas daemon start --detached ``` -------------------------------- ### Configure Environment Variables Source: https://github.com/friday-platform/friday-studio/blob/main/README.md Copies the environment variable example file and instructs to set necessary API keys, such as for an LLM provider. ```bash cp .env.example .env # open .env and set ANTHROPIC_API_KEY (or another provider key) ``` -------------------------------- ### Quick Start with @atlas/client Source: https://github.com/friday-platform/friday-studio/blob/main/packages/client/README.md Demonstrates how to make a request using the client and handle potential errors with parseResult. Ensure you have the necessary imports. ```typescript import { client, parseResult } from "@atlas/client/v2"; // Make a request and handle errors const result = await parseResult( client.chatStorage[":streamId"].$get({ param: { streamId: "123" } }), ); if (result.ok) { console.log(result.value.messages); } else { console.error(result.error); } ``` -------------------------------- ### Daemon Health Check and Start Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/SKILL.md Commands to check the status of the Friday daemon and start it if it's not running, including a hard-reload option. ```APIDOC ## Daemon Health Check and Start ### Description Commands to check the status of the Friday daemon and start it if it's not running, including a hard-reload option. ### Commands * **Check Status:** ```bash deno task atlas daemon status ``` * **Check Status (using resolved URL):** ```bash curl -k -sf "/health" && echo OK ``` * **Start Daemon (detached):** ```bash deno task atlas daemon start --detached ``` * **Restart Daemon (force):** ```bash deno task atlas daemon restart --force ``` ``` -------------------------------- ### Start Friday Daemon (Detached) Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/SKILL.md Starts the Friday daemon in detached mode, allowing it to run in the background. Useful for development environments. ```bash deno task atlas daemon start --detached ``` -------------------------------- ### Run Chat Replay Development Server Source: https://github.com/friday-platform/friday-studio/blob/main/tools/chat-replay/README.md Navigate to the chat-replay directory and start the development server using npm. This command is used to run the application locally for development and testing. ```bash cd chat-replay npm run dev ``` -------------------------------- ### Bad Description Examples Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/frontmatter.md These examples highlight common mistakes in skill descriptions, such as being too vague, using the wrong person, or lacking specific triggers. ```yaml description: Helps with documents # vague, no trigger ``` ```yaml description: I can help with PDFs. # first person ``` ```yaml description: You can use this to process # second person ``` ```yaml description: Processes data # no specifics, no trigger ``` ```yaml description: Does stuff with files # meaningless ``` ```yaml description: A skill for PDF work. # self-reference, redundant ``` -------------------------------- ### Create, Register, and Execute Agent with Cancellation Source: https://github.com/friday-platform/friday-studio/blob/main/packages/core/src/agent-server/README.md Demonstrates creating an agent using the SDK, registering it with the server, and executing it with support for cancellation. Ensure the server instance is available and session data is correctly provided. ```typescript import { createAgent } from "@atlas/agent-sdk"; import { AtlasAgentsMCPServer } from "@atlas/agent-server"; // Create agent using SDK const agent = createAgent({ name: "test-agent", handler: async (prompt, context) => { // Check for cancellation if (context.abortSignal?.aborted) { throw new Error("Cancelled"); } return { response: `Processed: ${prompt}` }; }, }); // Register with server await server.registerAgent(agent); // Execute via MCP with cancellation support const requestId = crypto.randomUUID(); const executePromise = server.executeAgent("test-agent", "Hello", sessionData, { requestId, }); // Cancel the execution await server.handleCancellation(requestId); // Execution will throw cancellation error try { await executePromise; } catch (error) { console.log("Execution cancelled"); } ``` -------------------------------- ### daemon restart Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/cli.md Restarts the HTTP server by stopping it and then starting it in detached mode. Supports similar flags to the `start` command and a force option. ```APIDOC ## daemon restart ### Description Stop → 3s wait → start detached. Same flags as `start`. `--force` bypasses the active-workspace check. ### Method `daemon restart [--port 8080] [--force] [--max-workspaces ] [--idle-timeout ]` ``` -------------------------------- ### Full Frontmatter Example with Optional Fields Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/frontmatter.md Demonstrates a complete SKILL.md frontmatter, including required 'name' and 'description', along with optional fields like 'allowed-tools', 'context', and 'user-invocable'. ```yaml --- name: creating-workspaces description: Scaffolds new Friday workspaces. Use when the user asks to create a workspace, add a new workflow, or convert a recurring task into automation. allowed-tools: - create_artifact - artifacts_update - webfetch context: workspace-authoring user-invocable: true argument-hint: --- ``` -------------------------------- ### Python Agent Example Source: https://github.com/friday-platform/friday-studio/blob/main/README.md Example of defining a user-type agent in Python for mechanical tasks, leveraging the 'friday-agent-sdk' for capabilities like LLM, HTTP, and MCP. ```python # Example usage of friday-agent-sdk within a user-type agent # from friday_agent_sdk import Agent, LLM, HTTP, MCP # class MyAgent(Agent): # def __init__(self): # super().__init__() # self.llm = LLM() # self.http = HTTP() # self.mcp = MCP() # def run(self): # # Mechanical decision logic here # pass ``` -------------------------------- ### Example Workspace Configuration Source: https://github.com/friday-platform/friday-studio/blob/main/packages/mcp-server/README.md This YAML configuration enables MCP, defines discoverable capabilities and jobs, and sets rate limits for requests and concurrent sessions. ```yaml server: mcp: enabled: true discoverable: capabilities: - "workspace_jobs_*" # Allow job listing and description jobs: - "build-*" # Allow all build jobs - "deploy-prod" # Allow specific deploy job rate_limits: requests_per_hour: 1000 concurrent_sessions: 5 ``` -------------------------------- ### Skill Registry Configuration Source: https://github.com/friday-platform/friday-studio/blob/main/ENVIRONMENTS.md Control remote skill installation and expose the internal kernel workspace. Set FRIDAY_ALLOW_REMOTE_SKILLS to "false" for hardened installs. ```shell FRIDAY_ALLOW_REMOTE_SKILLS FRIDAY_EXPOSE_KERNEL ``` -------------------------------- ### Generate Commit Message - Fix Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/patterns.md Example of generating a commit message for a bug fix, following the conventional commit format. Use this for correcting issues. ```markdown fix(reports): correct date formatting in timezone conversion Use UTC timestamps consistently across report generation ``` -------------------------------- ### Basic Login Flow with agent-browser Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/authentication.md Automate a basic login process by navigating to the login page, filling in credentials, and submitting the form. Use `snapshot -i` to identify elements and `wait --load networkidle` for synchronization. ```bash # Navigate to login page agent-browser open https://app.example.com/login agent-browser wait --load networkidle # Get form elements agent-browser snapshot -i # Output: @e1 [input type="email"], @e2 [input type="password"], @e3 [button] "Sign In" # Fill credentials agent-browser fill @e1 "user@example.com" agent-browser fill @e2 "password123" # Submit agent-browser click @e3 agent-browser wait --load networkidle # Verify login succeeded agent-browser get url # Should be dashboard, not login ``` -------------------------------- ### Database Migration Command (Low Freedom) Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/control-calibration.md Use this low-freedom example for critical operations like database migrations. The command must be run exactly as specified, with no modifications. ```bash python scripts/migrate.py --verify --backup ``` -------------------------------- ### Enable TLS for Development Source: https://github.com/friday-platform/friday-studio/blob/main/README.md Sets up TLS certificates for development and configures environment variables for the daemon URL and CA. ```bash bash scripts/setup-tls.sh ``` ```bash set -a . "${FRIDAY_HOME:-$HOME/.friday/local}/.env" 2>/dev/null \ || . "$HOME/.atlas/.env" 2>/dev/null || true set +a ``` -------------------------------- ### NDJSON Log Format Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/session-and-logs.md This is an example of the NDJSON format used for log entries. Each line is a self-contained JSON object with timestamp, level, message, and context details. ```json { "timestamp": "string" // ISO 8601 "level": "trace" | "debug" | "info" | "warn" | "error" | "fatal" "message": "string" "context": { "workspaceId": "?string" "sessionId": "?string" "agentId": "?string" "chatId": "?string" // synonym for streamId "streamId": "?string" "error": { "name", "message", "stack"?, "cause"? } "[key: string]": "unknown" } "stack_trace": "?string" } ``` -------------------------------- ### Generate Commit Message - Feat Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/patterns.md Example of generating a commit message for a new feature, following the conventional commit format. Use this for adding new functionality. ```markdown feat(auth): implement JWT-based authentication Add login endpoint and token validation middleware ``` -------------------------------- ### Example Skill Directory Layout Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/authoring-skills/references/scripts.md Illustrates the recommended directory structure for a skill, separating main instructions, references, and executable scripts. ```directory my-skill/ ├── SKILL.md # main instructions (loaded when triggered) ├── references/ │ ├── schema.md # field-by-field reference (loaded on demand) │ └── examples.md # worked examples (loaded on demand) └── scripts/ ├── analyze.py # executed, not loaded into context ├── validate.py # executed └── emit.py # executed ``` -------------------------------- ### Check or Start Daemon Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/recipes.md This snippet checks the status of the Friday daemon and starts it in detached mode if it is not running. It also shows a pure HTTP method to check the daemon's health. ```bash deno task atlas daemon status || deno task atlas daemon start --detached # or pure HTTP: curl -k -sf "$FRIDAYD_URL"/health > /dev/null || echo "daemon down" ``` -------------------------------- ### Bad Handoff Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/delegate-handoff/SKILL.md Illustrates a suboptimal handoff that leads to inefficient tool usage. Avoid vague goals and missing context. ```yaml goal: "Find the right org for these repos" handoff: "The user is ken@tempest.team. Try each org." ``` -------------------------------- ### Signal Configuration Schema Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/debugging-runtime-errors/SKILL.md Illustrates the correct structure for signal configuration, particularly the nested 'config' object containing the 'path'. This is crucial for avoiding 'Invalid signal config' errors. ```json { "id": "", "config": { "provider": "http", "description": "...", "config": { "path": "/your-path" } } } ``` -------------------------------- ### Restart Friday Studio Daemon Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/cli.md Restarts the Friday Studio daemon by stopping it, waiting for 3 seconds, and then starting it in detached mode. Supports the same flags as the 'start' command, with --force bypassing the active-workspace check. ```bash atlas daemon restart [--port 8080] [--force] [--max-workspaces ] [--idle-timeout ] ``` -------------------------------- ### Creating a Binary Artifact (User Agent SDK) Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/writing-to-memory/SKILL.md For binary content, use `create_artifact` with `contentEncoding: "base64"` and specify the `mimeType`. ```javascript # MCP / user-agent path: create_artifact( data={type:"file", content:"", contentEncoding:"base64", mimeType:"image/png", originalName:"chart.png"}, ... ) ``` -------------------------------- ### Incorrect Debugging Approach Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/debugging-broken-jobs/SKILL.md This example illustrates an incorrect debugging approach where a user prematurely assumes a platform bug without following the prescribed diagnostic steps. It highlights the importance of adhering to the 'diagnostic discipline' outlined in the documentation. ```text USER: run stale ASSISTANT [calls job tool] JOB TOOL: { summary: "" } ASSISTANT: This looks like a platform bug. Let me try migrating from Pattern A to Pattern B FSM… ``` -------------------------------- ### Register and Use Provider Registry Source: https://github.com/friday-platform/friday-studio/blob/main/packages/signals/README.md Demonstrates how to register built-in providers, get a registry instance, and load a provider from configuration. Ensure the registry is initialized before use. ```typescript import { ProviderRegistry } from "@atlas/signals"; // Register built-in providers ProviderRegistry.registerBuiltinProviders(); // Get registry instance const registry = ProviderRegistry.getInstance(); // Create provider from configuration const config = { id: "my-signal", provider: "http", config: { path: "/webhook", method: "POST", }, }; const provider = await registry.loadFromConfig(config); await provider.setup(); ``` -------------------------------- ### Tab Label Workflow Example Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/references/commands.md Demonstrates using user-assigned labels for managing tabs in multi-tab workflows, including switching, snapshotting, and closing by label. ```bash agent-browser tab new --label docs https://docs.example.com agent-browser tab new --label app https://app.example.com agent-browser tab docs # switch to docs agent-browser snapshot # populate refs for docs agent-browser click @e1 # ref click on docs agent-browser tab app # switch to app agent-browser tab close docs # close by label ``` -------------------------------- ### Agent Browser Full Skill Reference Source: https://github.com/friday-platform/friday-studio/blob/main/packages/bundled-agents/src/web/skill/SKILL.md To access a comprehensive list of all commands, flags, and environment variables, use the `--full` flag with the `core` skill. ```bash agent-browser skills get core --full ``` -------------------------------- ### Skills API Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/friday-cli/references/http.md Endpoints for managing skills, including listing, installing, and publishing. ```APIDOC ## Skills API ### Description Manage skills within the Friday ecosystem, including installation and publishing. ### Endpoints - `GET /skills` - List available skills. - `POST /skills/install` - Install a new skill. - `POST /skills/publish` - Publish a new skill. ``` -------------------------------- ### Get Workspace Configuration Source: https://github.com/friday-platform/friday-studio/blob/main/packages/system/skills/workspace-api/SKILL.md Retrieves the full parsed configuration of a specific workspace. ```APIDOC ## Get Workspace Configuration ### Description Retrieves the full parsed configuration of a specific workspace. ### Method GET ### Endpoint /api/workspaces/$WS/config ### Parameters #### Path Parameters - **WS** (string) - Required - The ID of the workspace whose configuration to retrieve. ### Request Example ```bash curl -k -s "$FRIDAYD_URL/api/workspaces/$WS/config" | jq ``` ### Response Example ```json { "config": { "version": "1.0", "workspace": { "name": "my-workspace" } } } ``` ```