The Goose plugin for Office Town. Install once, get the 4 core roles (boss, librarian, worker, scout), default skills, recipes, hooks, and town-wide standing orders wired into Goose.
Plugin structure follows Open Plugin Spec v1.0.0 — so other conformant hosts (Claude Code, etc.) can consume the same agents/skills/commands files, but v1.0 is built and tested for Goose.
Need Goose installed first — https://block.github.io/goose/.
goose plugin install jezweb/office-town-pluginThen either install the Cloudflare backend yourself, or paste the agent-install prompts at INSTALL.md to do the whole thing in one go.
office-town-plugin/
├── .plugin/plugin.json # Manifest (Open Plugin Spec v1.0.0)
├── agents/ # The 4 core roles
│ ├── boss.md # Routes work, holds the thread
│ ├── librarian.md # Extracts + curates the wiki
│ ├── worker.md # Deep work
│ └── scout.md # Outward scanning
├── skills/ # Per-role techniques
│ ├── curate/ # Graduate findings into wiki entries
│ ├── extract/ # Pull structured knowledge from unstructured sources
│ ├── build/ # The worker's working rhythm
│ ├── scan/ # The scout's scanning rhythm
│ └── dispatch/ # How boss routes work
├── commands/ # Slash-command recipes
│ ├── office-town-setup.yaml # First-session onboarding
│ ├── weekly-sweep.yaml # Scout's weekly scan
│ ├── knowledge-graduation.yaml # Librarian's curation pass
│ ├── project-onboarding.yaml # New project capture
│ └── triage-inbox.yaml # Librarian inbox triage
├── hooks/
│ ├── hooks.json # SessionStart + SessionEnd hooks
│ ├── session-start.sh # Loads briefings, recent findings, today's journal
│ └── session-end.sh # Ensures today's journal exists
├── rules/
│ └── town-standing-orders.md # Universal behaviour for every role
└── tests/ # Headless Goose tests — see tests/README.md
goose plugin install jezweb/office-towngit clone https://github.com/jezweb/office-town-plugin.git \
~/.config/goose/plugins/office-townAfter install, restart Goose. The 4 roles become available via @-mention,
recipes show as slash commands, and the session-start hook fires on every
session you open in an Office Town deployment.
- Install the plugin (above)
- Clone the office-town template:
git clone https://github.com/jezweb/office-town.git ~/Documents/my-town - Open Goose at
~/Documents/my-town/buildings/office - Run setup:
/office-town-setup town_name:my-town - The boss walks you through 7 conversational steps to capture business, voice, team, and initial contacts/orgs
After setup, start delegating:
@worker draft the Q3 proposal for Acme
@librarian extract everything we know about Acme from my inbox
@scout what's brewing in the WordPress hosting industry?
- Not a wiki backend — the wiki MCP lives in
office-town-cloudand is installed separately - Not a Goose fork — it's a plugin that runs on stock Goose
- Not opinionated about your provider — you bring your own LLM
- Not multi-tenant — one town per machine; Cloudflare backend is per-user
| Host | Status |
|---|---|
| Goose ≥ 1.35.0 | ✅ Primary target |
| Claude Code | 🟡 Cross-host portable per spec; not yet validated |
| Other Open Plugin Spec hosts | 🟡 Theoretically; please file an issue if you test |
The test pack (tests/) verifies role identity + delegation + briefing
loading against any Office Town deployment.
export TOWN_ROOT=~/Documents/my-town
export GOOSE_BIN=/path/to/goose
bash tests/runner.shA GitHub Actions workflow (.github/workflows/test-pack.yml) runs the
pack on every PR touching agents/skills/commands/hooks (disabled by default
until RUN_TEST_PACK_IN_CI repo variable is set to true).
- Office Town template — the markdown methodology this plugin packages
- Office Town Cloud — the Cloudflare Workers backend (wiki MCP, files, publish, kanban, cron)
- Methodology — the why behind Town/Place/Role/Task vocabulary
MIT. © 2026 Jezweb Pty Ltd.