From agentops
Hard-blocks edits outside declared frozen directories to protect critical paths during risky changes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentops:scopeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Purpose:** Declare which directories are in scope for the current work session. Edits outside the declared scope are hard-blocked by a PreToolUse hook.
Purpose: Declare which directories are in scope for the current work session. Edits outside the declared scope are hard-blocked by a PreToolUse hook.
YOU MUST EXECUTE THIS WORKFLOW. Do not just describe it.
/scope freeze cli/cmd/ao/ # Freeze a single directory
/scope freeze cli/cmd/ao/ skills/scope/ # Freeze multiple (additive)
/scope unfreeze cli/cmd/ao/ # Remove one frozen directory
/scope unfreeze # Clear ALL frozen directories
/scope status # Show current lock state
/scope status --json # JSON output
When .agents/scope.lock declares one or more frozen_dirs:
Edit, Write, or Bash tool call whose target path is outside every frozen directory is rejected by hooks/edit-scope-guard.sh with a structured stderr reason and a non-zero exit code (Claude Code converts that into a tool-use refusal).frozen_dirs is empty, the hook short-circuits with exit 0 (no enforcement; allow everything).The lock file is written via cli/internal/llmwiki/scope_guard.go:SafeAtomicWrite, so concurrent freeze / unfreeze calls converge atomically (last writer wins, never tears).
/scope freeze <dir>...Append one or more directories to the frozen set. Idempotent; re-freezing an already-frozen directory is a no-op. Updates acquired_at (ISO-8601) and acquired_by (session id or PID) on every write.
/scope unfreeze [<dir>]Without arguments, clears the entire frozen set. With one or more directory arguments, removes just those entries. Removing a directory that is not frozen is a no-op.
/scope status [--json]Print the current lock state. With --json, emit a single JSON object matching the schema in references/lock-file-format.md. Without flags, print a human-readable summary including each frozen directory, the acquisition timestamp, and the acquiring session.
/scope guard (future combo skill)Reserved for a follow-up skill that combines freeze + status + spawn-orchestration. Not implemented in this release; documented here for forward reference.
.agents/scope.lock is a single JSON object. Full schema lives in references/lock-file-format.md. Key fields:
schema_version — currently 1frozen_dirs — list of repo-relative directory prefixes (trailing slash optional)acquired_at — ISO-8601 UTC timestampacquired_by — string identifying the writer (session id, PID, or label)User says: /scope freeze cli/cmd/ao/ cli/internal/scope/
What happens:
ao scope freeze cli/cmd/ao/ cli/internal/scope/ writes .agents/scope.lock via SafeAtomicWrite.hooks/edit-scope-guard.sh (registered as PreToolUse on Edit|Write|Bash) consults the lock on every subsequent tool call.Write to skills/foo/SKILL.md is rejected; a worker editing cli/cmd/ao/scope.go proceeds.User says: /scope unfreeze
What happens:
ao scope unfreeze rewrites .agents/scope.lock with frozen_dirs: []..agents/scope.lock path. Wave 2 (issue I5) migrates the path through lib/ao-paths.sh.rm -rf, git reset --hard, DROP DATABASE, kubectl delete, terraform destroy) — including allowlist layering, one-shot override codes, and PreToolUse wiring — see references/destructive-command-guard-patterns.md. Wire it alongside the scope guard when a wave touches infrastructure or shared data.cc-hooks.npx claudepluginhub boshu2/agentops --plugin agentopsRestricts Edit/Write/MultiEdit to one directory for the session, blocking edits outside it. Useful for debugging or fencing parallel agents.
Blocks file edits outside a specified directory boundary to scope work to a single module. Activate via /freeze with a directory path.
Restricts Edit and Write operations to a specific directory for the session. Blocks edits outside the allowed path. Useful when debugging to prevent accidentally modifying unrelated code.