feat(using-interns): add grep_audit routing [v0.3.0]

Add 3 routing-table rows for the new deterministic `grep_audit` intern
per .wiki/concepts/interns-grep-audit-design.md §Layer 3:

  - grep_audit row — deterministic, no LLM call, zero cost
  - bulk_text_read vs grep_audit boundary — Q&A vs contains-check
  - always-ask uniform reminder — server opens file even sans LLM

Consistency adds: new Overview catalog row, Tool quick reference row,
prose note marking grep_audit as the catalog's first LLM-free intern.

Version 0.2.2 -> 0.3.0 (MINOR — new routing capability).

Closes [interns-grep-audit-skill-updates] on the .tasks board.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-22 08:02:57 +03:00
parent b9db98ec15
commit 0accdccaac
2 changed files with 16 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
# Task Board # Task Board
_Updated: 2026-05-21 (using-vds-ops-review re-closed 🟢 via fresh-eyes subagent — 0 findings on 5 dimensions, 2 informational notes filed as ⚪ siblings: description-length-investigate + synology-ops-disambiguation-uplift.)_ _Updated: 2026-05-22 (interns-grep-audit-skill-updates closed 🟢 — using-interns v0.2.2→0.3.0 with 3 routing rows for `grep_audit` deterministic intern plus consistency adds; unblocks half of `[interns-grep-audit-review]`.)_
<!-- <!--
Canonical layout. One block per task. Per-task deep context lives in Canonical layout. One block per task. Per-task deep context lives in
@@ -1257,7 +1257,7 @@ Findings — отдельные follow-up tasks (`using-vds-ops-<gap>-fix` ил
--- ---
## [interns-grep-audit-skill-updates] — Routing-добавка в `using-interns/SKILL.md` под новый детерминированный интерн `grep_audit`. Параллельная задача к `[interns-grep-audit-impl]` в `.common` — skill-edit сам по себе шипится независимо, e2e check после имплементации. ## 🟢 [interns-grep-audit-skill-updates] — Routing-добавка в `using-interns/SKILL.md` под новый детерминированный интерн `grep_audit`. Параллельная задача к `[interns-grep-audit-impl]` в `.common` — skill-edit сам по себе шипится независимо, e2e check после имплементации.
**Design:** `.wiki/concepts/interns-grep-audit-design.md` §«Layer 3 — skill update». **Design:** `.wiki/concepts/interns-grep-audit-design.md` §«Layer 3 — skill update».
@@ -1279,16 +1279,13 @@ Findings — отдельные follow-up tasks (`using-vds-ops-<gap>-fix` ил
**Reviewer:** см. `[interns-grep-audit-review]` umbrella. **Reviewer:** см. `[interns-grep-audit-review]` umbrella.
**Status:** ready **Status:** done
**Where I stopped:** (not started) **Where I stopped:** done — routing block landed, skill installed at v0.3.0
**Next action:** 1. Read `skills/using-interns/SKILL.md` — найти routing-секцию (по аналогии с repo_read строками). **Closed by:** SKILL.md got 3 routing-table rows per design page §«Layer 3» (grep_audit deterministic claim, `bulk_text_read` vs `grep_audit` boundary, always-ask uniform reminder); plus consistency adds — Overview catalog table row, Overview prose note «first LLM-free intern in the catalog», Tool quick reference row with `paths`/`patterns`/`output`/`case_sensitive` signature. Version bumped 0.2.2 → 0.3.0 (MINOR — new routing capability). Rebuild + install via `scripts\install.ps1 -Names using-interns` (Windows PS); installed copy at `~/.claude/skills/using-interns/SKILL.md` shows `version: 0.3.0` and 6× `grep_audit` mentions (1 catalog + 3 routing + 1 quick-ref + 1 prose). Hermes mirror absent (`hermes/skills/using-interns*` empty per Glob) — skip per task scope.
2. Edit — добавить 3 строки про `grep_audit` (точная формулировка в design-page §«Layer 3»). **Next action:** (none — kept until merged); unblocks `[interns-grep-audit-review]` (other blocker `[interns-grep-audit-impl]` lives in `OpeItcLoc03/.common`, status TBD).
3. Bump version frontmatter MINOR. **Branch:** master
4. `scripts/install.ps1 -Names using-interns` (Windows) — собрать dist + install.
5. Verify установленной копии: `version:` совпадает.
6. Commit: `feat(using-interns): add grep_audit routing [vX.Y.0]`.
**Branch:** n/a
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-22T04:19:15.319Z --> <!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-22T04:19:15.319Z -->
<!-- closed-by: vitya@DESKTOP-NSEF0UK / 2026-05-22 / acceptance: 3 routing lines ✅ (plus consistency adds in Overview+QuickRef); MINOR bump 0.2.2→0.3.0 ✅; dist+install pass ✅; installed copy verified ✅ -->
--- ---

View File

@@ -1,6 +1,6 @@
--- ---
name: using-interns name: using-interns
version: 0.2.2 version: 0.3.0
description: Use when delegating predictable bulk reads or summarization to cheap intern LLMs via the local `interns` MCP server (`mcp__interns__bulk_text_read`, `mcp__interns__transcript_distill`, etc.) so Claude saves Anthropic quota. Activated by `delegate to interns when allowed` in CLAUDE.md or explicit phrases like "use interns", "delegate to an intern", "разреши интернов", "allow interns". **Also activates proactively when Claude is about to read 3+ files for context, read a single file >400 lines for non-edit purposes, or distill a long transcript — surface the offer "знаю, что есть интерны — заюзать?" before proceeding, even without an explicit user phrase.** Per-session permission grant mirrors `project-discipline` Rule 4: ask-mode default, conversational grant / revoke, always-ask paths for `.env` / secrets / keys / SSH / credentials even with active grant, transitive rule (Claude can't bypass by reading the file itself and forwarding content), session-end reset. Skip for architecture, debugging, auth / payments, final commit messages, or final user-facing text. description: Use when delegating predictable bulk reads or summarization to cheap intern LLMs via the local `interns` MCP server (`mcp__interns__bulk_text_read`, `mcp__interns__transcript_distill`, etc.) so Claude saves Anthropic quota. Activated by `delegate to interns when allowed` in CLAUDE.md or explicit phrases like "use interns", "delegate to an intern", "разреши интернов", "allow interns". **Also activates proactively when Claude is about to read 3+ files for context, read a single file >400 lines for non-edit purposes, or distill a long transcript — surface the offer "знаю, что есть интерны — заюзать?" before proceeding, even without an explicit user phrase.** Per-session permission grant mirrors `project-discipline` Rule 4: ask-mode default, conversational grant / revoke, always-ask paths for `.env` / secrets / keys / SSH / credentials even with active grant, transitive rule (Claude can't bypass by reading the file itself and forwarding content), session-end reset. Skip for architecture, debugging, auth / payments, final commit messages, or final user-facing text.
--- ---
@@ -10,15 +10,16 @@ description: Use when delegating predictable bulk reads or summarization to chea
`interns` is a local stdio MCP server that exposes a catalog of cheap-LLM "interns" — DeepSeek, Kimi, Ollama-hosted models, etc. — so Claude can delegate predictable bulk I/O and summarization tasks instead of paying Anthropic quota for them. The pattern (~23× cheaper end-to-end on summarization, ~125× per-call on bulk reads) is sourced from a Reddit thread + Medium follow-up; see `.wiki/concepts/interns-design.md` for the full design and the cost numbers. `interns` is a local stdio MCP server that exposes a catalog of cheap-LLM "interns" — DeepSeek, Kimi, Ollama-hosted models, etc. — so Claude can delegate predictable bulk I/O and summarization tasks instead of paying Anthropic quota for them. The pattern (~23× cheaper end-to-end on summarization, ~125× per-call on bulk reads) is sourced from a Reddit thread + Medium follow-up; see `.wiki/concepts/interns-design.md` for the full design and the cost numbers.
Three MVP interns: The catalog:
| Tool | What it does | When to call | | Tool | What it does | When to call |
|---|---|---| |---|---|---|
| `mcp__interns__bulk_text_read` | Reads N files end-to-end and answers a focused question with file:line citations. | Claude was about to read 3+ files or one file > 400 lines just to extract context. | | `mcp__interns__bulk_text_read` | Reads N files end-to-end and answers a focused question with file:line citations. | Claude was about to read 3+ files or one file > 400 lines just to extract context. |
| `mcp__interns__transcript_distill` | Compresses a session transcript / log into a structured action list (decisions / open questions / next steps). | Before updating `.wiki/log.md` or producing a session summary. | | `mcp__interns__transcript_distill` | Compresses a session transcript / log into a structured action list (decisions / open questions / next steps). | Before updating `.wiki/log.md` or producing a session summary. |
| `mcp__interns__repo_read` | Packs a directory/repo via `repomix` and answers a focused question about the codebase. | Whole-repo or whole-directory questions — architecture, "where is X used", "what does module Y do". See Routing hints for `repo_read` vs `bulk_text_read`. | | `mcp__interns__repo_read` | Packs a directory/repo via `repomix` and answers a focused question about the codebase. | Whole-repo or whole-directory questions — architecture, "where is X used", "what does module Y do". See Routing hints for `repo_read` vs `bulk_text_read`. |
| `mcp__interns__grep_audit` | Deterministic grep matrix over N paths × M patterns. **No LLM call, no endpoint cost.** Returns ✅/❌/⚠️ table or JSON. | Contains/not-contains audits — checking a set of CLAUDE.md / SKILL.md / frontmatter files for canonical strings. See Routing hints for `grep_audit` vs `bulk_text_read`. |
All currently run on Ollama Cloud (`deepseek-v4-flash`, ~$0.002 / call). Adding a new intern is a config-only change — see `.wiki/concepts/interns-design.md` § "Как добавить нового интерна". LLM-backed interns currently run on Ollama Cloud (`deepseek-v4-flash`, ~$0.002 / call). `grep_audit` is the catalog's first LLM-free intern — zero cost, zero hallucination boundary. Adding a new intern is a config-only change — see `.wiki/concepts/interns-design.md` § "Как добавить нового интерна".
## Prerequisites ## Prerequisites
@@ -131,6 +132,9 @@ Any call with estimated cost > $0.10 (per the `tokens × price_per_M` config in
| Don't delegate editing or debugging a specific file to `repo_read` | Read the file yourself. `repo_read` is for comprehension, not modification. | | Don't delegate editing or debugging a specific file to `repo_read` | Read the file yourself. `repo_read` is for comprehension, not modification. |
| Updating `.wiki/log.md` or session-summary doc | `transcript_distill` | | Updating `.wiki/log.md` or session-summary doc | `transcript_distill` |
| Compressing a long brainstorm transcript before quoting in a design doc | `transcript_distill` | | Compressing a long brainstorm transcript before quoting in a design doc | `transcript_distill` |
| Audit N paths × M patterns (contains/not-contains matrix — checking CLAUDE.md / SKILL.md / frontmatter for canonical strings) | `grep_audit` — deterministic, no LLM call, zero cost, zero hallucination boundary |
| `bulk_text_read` vs `grep_audit` | `bulk_text_read` is Q&A with an LLM over files; `grep_audit` is deterministic contains/not-contains. Semantic match (paraphrase, intent) → `bulk_text_read` with a question, not `grep_audit`. |
| Always-ask paths apply uniformly to `grep_audit` | The server still opens the file even without an LLM call — no special "safe intern" carve-out. Same `.env` / secrets / keys / SSH gate as the LLM-backed interns. |
| (Future interns in `config.yaml`) | per the description in the catalog | | (Future interns in `config.yaml`) | per the description in the catalog |
## Workflow ## Workflow
@@ -155,6 +159,7 @@ Don't pass file *contents* as arguments — only paths. The MCP server reads and
| `mcp__interns__bulk_text_read` | `paths: list[str]`, `question: str` | `max_tokens: int` | Read N files end-to-end, answer the question with citations. | | `mcp__interns__bulk_text_read` | `paths: list[str]`, `question: str` | `max_tokens: int` | Read N files end-to-end, answer the question with citations. |
| `mcp__interns__repo_read` | `paths: list[str]`, `question: str` | `compress: bool`, `max_tokens: int` | Pack directory/repo via repomix, answer the question. Use `compress=True` for large codebases (lossy: strips comments/whitespace). | | `mcp__interns__repo_read` | `paths: list[str]`, `question: str` | `compress: bool`, `max_tokens: int` | Pack directory/repo via repomix, answer the question. Use `compress=True` for large codebases (lossy: strips comments/whitespace). |
| `mcp__interns__transcript_distill` | `paths: list[str]`, `question: str` | `max_tokens: int` | Distill transcript / log into structured action list. | | `mcp__interns__transcript_distill` | `paths: list[str]`, `question: str` | `max_tokens: int` | Distill transcript / log into structured action list. |
| `mcp__interns__grep_audit` | `paths: list[str]`, `patterns: list[str \| dict]` | `output: "table" \| "json"` (default `"table"`), `case_sensitive: bool` (default `True`) | Deterministic grep matrix over N paths × M patterns. No LLM call. Returns ✅/❌/⚠️ table or JSON. `patterns` are substring by default; pass `{pattern, name, regex: true}` for named regex columns. |
(Future interns expose tools at `mcp__interns__<intern_id>` as the catalog grows.) (Future interns expose tools at `mcp__interns__<intern_id>` as the catalog grows.)