shimo4228/harness-scope/tree/main/plugin
harness-scope
依儲存庫使用命名 profile 開關全域 skills、agents、指令檔與工具,同時一律保留儲存庫自己的 skills、agents 與 CLAUDE.md。
關於這個 mod
harness-scope 是 Claude Code 外掛。它使用 ~/.claude/harness-scope/profiles/ 中的命名 profile,依儲存庫開啟或關閉全域 skills、agents、指令檔與工具。儲存庫透過一行 .claude/harness-scope.json 選擇 profile;儲存庫自己的 skills、agents 與 CLAUDE.md 一律保留。hooks 處理 SessionStart、session.start(註冊 /harness-scope)、command.run、prompt.context、prompt.attachment、agent.offer、tool.describe 與 tool.call。沒有設定檔或 profile 無法讀取時,所有 hook 原樣放行。
安裝
請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。
claude plugin marketplace add shimo4228/harness-scope claude plugin install harness-scope
原文 / README
harness-scope
The Claude Code Mod itself: the folder Claude Code installs. It turns your global skills, agents, instruction files (CLAUDE.md and rules) and tools on or off per repo, using named profiles you keep in ~/.claude/harness-scope/profiles/. A repo picks one profile with a one-line .claude/harness-scope.json; the repo's own skills, agents and CLAUDE.md always stay.
You decide what is hidden. Nothing changes in a repo until you put that file there, and the file can only name one of your profiles. Run /harness-scope to see what the profile turned off.
Examples
- A writing repo that sees only its own skills. Put
{ "profile": "writing" }in the repo's.claude/harness-scope.json. The bundledwritingprofile keeps the repo's own skills, the Explore and general-purpose agents, and turns off LSP, NotebookEdit, EnterWorktree and ExitWorktree. - Keep a few global skills in a docs repo. Save
~/.claude/harness-scope/profiles/docs.jsonas{ "skills": { "allow": ["prose-translation", "anthropic-skills:docx"] } }and selectdocsin the repo. Every other global, plugin and built-in skill drops out of the listing there. - Hide coding rules and an MCP server's tools in a research repo. Save
{ "instructions": { "deny": ["~/.claude/rules/common/testing.md"] }, "tools": { "deny": ["mcp__github__*"] } }as a profile and select it. That rule file is not loaded, and the matching tools are refused when called.
What each hook does
| Hook | What it changes |
|---|---|
| classic.SessionStart | Nothing in the session. On /clear and resume it forgets the loaded profile so the next request reads it again. |
| session.start | Registers the /harness-scope command. |
| command.run | Answers /harness-scope with the list of what the profile turned off. Other commands pass through untouched. |
| prompt.context | Removes your own instruction files (kind user) that the profile turns off. Project, local, managed and memory files are never removed. |
| prompt.attachment | Removes turned-off skills from the skill listing and turned-off tools from the deferred tool list. Reminders from hooks and other plugins pass through untouched. |
| agent.offer | Stops offering agent types the profile turns off. The repo's own agents are always offered. |
| tool.describe | Moves turned-off tools behind ToolSearch. |
| tool.call | Refuses calls to turned-off tools, and Skill calls to skills it removed from the listing, with the reason. |
With no .claude/harness-scope.json, or with a profile it cannot read, every hook passes everything through unchanged.
Data
The Mod reads the profile files in ~/.claude/harness-scope/profiles/, the repo's .claude/harness-scope.json, and Claude Code's session usage (only to tell the repo's own skills apart). It reads no environment variables: it finds ~/.claude from where the plugin is installed, or from the optional configDir setting. It writes nothing, sends nothing over the network, starts no processes and calls no model.
Usage, the profile format, measurements and limitations are in the README of the shimo4228/harness-scope repository on GitHub.
