Skip to content

/brownfield

Scan and manage brownfield repository/worktree defaults for interviews

From plugin
ouroboros
6.4k26 skills22 agents3 hooks1 MCP

Claude Code

$ npx -y skills add Q00/ouroboros --skill brownfield --agent claude-code

SKILL.md

brownfield.SKILL.md
name: brownfield
description: "Scan and manage brownfield repository/worktree defaults for interviews"

/ouroboros:brownfield

Manage the registry of existing git repositories and linked worktrees, and the default repos used as interview context. The registry lives in the Ouroboros DB: listing, defaults, and search read it and never walk the filesystem. Only `scan` walks the disk.

ooo brownfield                # List registered repos and set defaults (scans only if none are registered)
ooo brownfield scan           # Rescan the scan root and refresh the search index
ooo brownfield defaults       # Show current defaults
ooo brownfield find <topic>   # Rank registered repos by relevance to a topic
ooo brownfield set 6,18,19    # Set defaults by repo numbers
ooo brownfield detect [path]  # Author mechanical.toml via one AI call

Loading MCP tools (deferred-schema guard)

Ouroboros tools may be deferred, and a schema loaded on one turn can unload by the next. Immediately before each `ouroboros_*` call, load it with the active runtime's tool-discovery capability: `"+ouroboros brownfield"` for `ouroboros_brownfield`. A call whose schema is not loaded fails with "Invalid tool parameters". If the tool is already callable, discovery is a no-op and an empty result is expected. If it is genuinely absent, stop and say the Ouroboros MCP server is not available. Listing, scan, find, defaults, and set use only this MCP tool, never the CLI or Python scripts.

Default flow (`ooo brownfield`)

Step 1: List the registry

Tool: ouroboros_brownfield
Arguments: { "action": "query" }

If `meta.total` is 0, nothing is registered yet: run the scan below instead and use its response. Otherwise do not scan; the user runs `ooo brownfield scan` when repos were added or moved.

Tool: ouroboros_brownfield
Arguments: { "action": "scan" }

Scan boundaries:

  • The walk starts at `scan_root` (default: the user's home directory) and goes at most two directory levels deep (`~/repo` and `~/group/repo` are found; deeper nesting is not).
  • Dot-prefixed and noisy directories such as `node_modules` are not walked.
  • Normal repos (`.git` directory) and linked worktrees (`.git` file) are registered self-only when the walk reaches them. Git worktree families are not expanded, so worktrees outside the depth-bounded walk (e.g. under `.ouroboros/worktrees`) are not pulled in.
  • Repos without remotes or with remotes not named `origin` are eligible. Existing defaults are preserved; repos no longer on disk are not removed.
  • A rescan skips the `git` check for already-registered repos and rebuilds a repo's search document (manifest name and description, README head, top-level entry names) only when those files changed.

The query or scan response `text` already holds the numbered `{id}. {name}` list with ` *` markers on defaults (query lines also carry `: {path} - {desc}`); make no further MCP calls to list repos. Show the numbers and names (never the scores or paths) as a plain-text two-column grid in a code block (not a markdown table), keeping the `*` markers exactly:

Scan complete. 8 repositories registered.

 1. repo-alpha                   5. repo-epsilon
 2. repo-bravo *                 6. repo-foxtrot
 3. repo-charlie                 7. repo-golf *
 4. repo-delta                   8. repo-hotel

If the scan finds nothing, say "No git repositories or worktrees found." and stop.

Step 2: Default selection

**Do NOT use the active runtime's `ask_user` dialog for this selection**: text between tool calls may not render, and dialog previews truncate long lists. Instead, **end the turn with the repo grid as the final message** and collect the selection as a plain chat reply. Directly below the grid, append:

  • With defaults: `Current defaults: <names> (numbers <numbers>)`, then "Reply with repo numbers to change defaults (e.g. "6, 18, 19"), "keep" to keep the current defaults, or "none" to clear them."
  • Without defaults: `No defaults set.`, then "Reply with repo numbers to set defaults (e.g. "6, 18, 19"), or "none" to run interviews in greenfield mode."

Make no tool calls after the grid; the breadcrumb footer is still the last line.

Next turn, parse the reply: numbers (any separator) → those indices; "keep" → confirm defaults unchanged, no MCP call; "none" → empty indices; anything else → ask again in plain text, never guess. Then update all defaults in one call (it replaces every existing default):

Tool: ouroboros_brownfield
Arguments: { "action": "set_defaults", "indices": "<comma-separated IDs>" }

For example `{ "action": "set_defaults", "indices": "6,18,19" }`, or `"indices": ""` for "none".

Step 3: Confirm

Name the new defaults and that they will be used as interview context; for "none", say interviews run in greenfield mode and `ooo brownfield` can set defaults later.

Subcommands

  • **`scan`**: run the Step 1 scan call (even when repos are registered); show the grid and stop.
  • **`defaults`**: run the Step 1 query call (no scan) and show only the `*` repos, or "No default repos set. Run 'ooo brownfield' to configure."
  • **`find <topic>`**: rank the registered repos for the topic, without scanning:
  Tool: ouroboros_brownfield
  Arguments: { "action": "query", "text": "<topic>" }

Show the returned lines best first (number, name, `*` marker, score; the top 10 unless the user asks for more, then pass `limit`) and offer `ooo brownfield set <numbers>`. Ranking is lexical (BM25 over name, description, path, manifest, README head, and top-level entries), so it matches words, not meaning: if nothing matches, say so and suggest other keywords or `ooo brownfield` for the full list. When the response says some repos have no search document, mention that `ooo brownfield scan` indexes them.

  • **`set <indices>`**: parse the comma-separated indices and call `{ "action": "set_defaults", "indices": "<indices>" }` without scanning; confirm the updated de
Read more
@q00
Ships withouroboros

Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode, Copilot, Kiro and more.

6.4k26 skills22 agents1 MCP
Get the whole plugin, auto-invoked

Stars on GitHub

Momentum

stars in total
6.4k
Star history of Q00/ouroboros on GitHub, a chart by star-history.com

Other skills on ouroboros.

threat-model
Auto-invoked

threat-model

Build a threat model for a target codebase. Three modes: "interview" walks an application owner through the four-question…

@q00@q00Install Skill
triage
Auto-invoked

triage

Triage a batch of raw security findings. Verify each is real,

@q00@q00Install Skill
vuln-scan
Auto-invoked

vuln-scan

Static source-code vulnerability scan. Reads a target directory (and THREAT_MODEL.md if present), spawns parallel review…

@q00@q00Install Skill
auto
Auto-invoked

auto

Use when the work spans several files or replaces a framework, language, auth, storage, or API layer (rewrites and migrations…

@q00@q00Install Skill
config
Auto-invoked

config

Open or drive the Ouroboros settings GUI (browser, TUI, or conversational fallback)

@q00@q00Install Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis2w393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca2w111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip2w109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about brownfield.

Which coding agents can use brownfield?
brownfield installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.