Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add BrentFarris/echo --skill workspace-agent-modesgit clone --depth 1 https://github.com/BrentFarris/echoWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/brentfarris/echo/workspace-agent-modes)<a href="https://agentmods.dev/skills/brentfarris/echo/workspace-agent-modes"><img src="https://agentmods.dev/badge/skills/brentfarris/echo/workspace-agent-modes/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/brentfarris/echo/workspace-agent-modes"><img src="https://agentmods.dev/badge/skills/brentfarris/echo/workspace-agent-modes.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00030 | $0.00409 |
| Opus 5.5 | $0.00012 | $0.00164 |
| Sonnet 5.5 | $0.00006 | $0.00082 |
| Haiku 4.5 | $0.00003 | $0.00041 |
Grade A, and why
workspace-agent-modes scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Workspace agent modes
- Storage: per-workspace
.echo/agent-modes.json(viainternal/agentmodes). The on-disk shape is{"defaultModeId": "...", "modes": [...]}(agentmodes.store).defaultModeIdis optional/omitted when unset;load()also migrates the legacy bare-JSON-array format in memory, so never assume the file is an array when reading it. defaultModeIdis the workspace-scoped default agent mode for new chat tabs. Unset/invalid values resolve togeneral(agentmodes.GeneralID).Manager.SetDefaultvalidates the ID against built-ins + custom modes; explicitly choosing General stores an empty value (setting omitted).Manager.Deleteclears the default if it pointed at the deleted mode.- API:
GET /api/agent-modes?workspaceId=returns{workspaceId, modes, tools, defaultModeId}.PUT /api/agent-modes/defaultwith{workspaceId, modeId}sets the default (registered as a literal path inserver.goso it does not collide withPUT /api/agent-modes/{id}). - Frontend consumers:
web/js/views/home.js(defaultAgentModeIdmodule var; used byrestoreCurrentComposerfor new tabs and as fallback for invalid carry-overs) andweb/src/chatSurface.ts(preselectsdata.defaultModeIdon the mode select; saved drafts still win viarestoreDraft). Settings UI lives inrenderAgentModesinweb/js/views/settings.js(data-default-modeselect).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 17 lines · 30 tokens per session scan A f8bfecf80c85
workspace-agent-modes is a skill published in the GitHub repository BrentFarris/echo (11 stars, last pushed today), licensed MIT. It adds 30 tokens to every session and 409 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-12.
Other skills, from other repositories
claude_code_delegation
Delegate coding, review, and refactor tasks to Claude Code CLI through Row-Bot's approval-gated shell workflow.
developer_coding
Structured workflow for implementing code changes in a conversation's code folder.
code-runner
Execute Python code, Shell commands, and pytest tests in a sandboxed environment. Returns structured results with stdout, stderr, exitcode, and timing. Use when writing/testing/debugging code, running scripts, or validating code snippets. Supports --lang python/shell/test, --timeout, --workdir.
add-resend
Add Resend (email) channel integration via Chat SDK.
add-macos-statusbar
Add a macOS menu bar status indicator for NanoClaw. Shows a bolt icon with a green/red dot indicating whether NanoClaw is running, with Start, Stop, and Restart controls. macOS only.
Cortex
Operate Cortex, the LifeOS memory system — the typed Knowledge Archive (People, Companies, Ideas, Research with typed related: links) plus recall of prior work sessions, ISAs, and conversations. Search, add, harvest, develop, ingest, distill, graph-navigate, recall. USE WHEN cortex, knowledge, knowledge base, search…