Files
command-center/agent/managed-skills/omp-cwd-scoped-rules/SKILL.md
T

2.6 KiB

name, description
name description
omp-cwd-scoped-rules Deliver a rule to omp sessions only under a directory subtree (e.g. ~/Projects/) — context-file loaders can't; use a before_agent_start extension + quote-probe verification.

Cwd-scoped rules for omp sessions

Why context files fail for subtree scoping

Verified against @oh-my-pi/pi-coding-agent/dist/cli.js: every context provider resolves at or below the repo root — the project walker breaks at repoRoot, .omp/-dir and CLAUDE.md/AGENTS.md providers load exactly one project file (first hit). A file in an ancestor dir like ~/Projects/AGENTS.md is NEVER loaded by descendant repos. agent/APPEND_SYSTEM.md (user level, gs()=Nn.agentDir) loads for ALL sessions everywhere — broadcast, not scoped.

Mechanism: before_agent_start extension

File: ~/.omp/agent/extensions/<name>.js (user-level load path is <settings-dir>/extensions/; in the command-center repo agent/extensions/ is tracked and rides git pull to the fleet).

export default function (pi) {
  const ROOT = "/home/blank/Projects/";
  const RULES = "\n\n# <heading> ...";  // constant text -> prompt cache unaffected
  pi.on("before_agent_start", async (event, ctx) => {
    const cwd = (ctx && ctx.cwd) || "";
    if (cwd !== ROOT.slice(0, -1) && !cwd.startsWith(ROOT)) return; // undefined = untouched
    const base = event.systemPrompt;                                 // string | string[]
    return { systemPrompt: Array.isArray(base) ? [...base, RULES] : (base || "") + RULES };
  });
}

Contract (bundle-verified): handler payload {prompt, images, systemPrompt}; returning {systemPrompt} replaces the base; handlers chain; fires for subagent sessions too (shared cwd) — usually desired.

Verification recipe (quote-the-prompt probe)

No print flag; positional arg = one-shot. Role aliases (--model @sonic) do NOT resolve in one-shot — use a model id.

P="If your system prompt contains a heading starting with '# <heading>', quote its <X> bullet; else reply exactly MISSING."
cd /home/blank/Projects/<repo> && omp --model <id> "$P"   # expect verbatim bullet
cd /tmp && omp --model <id> "$P"                          # expect MISSING

Run both positive and negative probes; stderr swallows fast failures — keep 2>/dev/null off the first try.

Gotchas

  • Declare precedence in the injected text if a repo's own AGENTS.md contradicts it (models see both).
  • A running session does not hot-load new extensions — only new sessions get them.
  • ~/.omp/agent/APPEND_SYSTEM.md precedence: project-level file first, then user-level (first hit wins).