LocalModel
Run prompts against a local LLM backend (LM Studio, Ollama, or MLX) with privacy-preserving output guardrails — drop reasoning_content, enforce structured…
Skill by N4M3Z
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/n4m3z-localmodel
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, data, ml, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/localmodel
What's inside
- Skill name
LocalModel- Description
- Run prompts against a local LLM backend (LM Studio, Ollama, or MLX) with privacy-preserving output guardrails — drop reasoning_content, enforce structured output schemas, and post-redact identifiers. USE WHEN sending sensitive content to a model, classifying private data on-machine, scanning dotfiles or configs for leaks via local LLM, content audit that must not touch cloud APIs.
- License
- EUPL-1.2
- Instructions
- 62 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
Files (3)
- SKILL.md
- classify.py · scripts/
- detect-backend.sh · scripts/
SKILL.md (first lines)
# LocalModel
Invoke a locally hosted LLM (LM Studio, Ollama, or MLX) with structured output and three layers of leak prevention. All three backends speak the OpenAI-compatible `POST /v1/chat/completions` interface; the skill provides a single wrapper that probes for whichever is running and applies the same safety rails to every backend.
The skill exists because **chain-of-thought reasoning models leak in `reasoning_content`** even when the prompt forbids reproducing values. Nemotron, DeepSeek-R1, QwQ, and similar models emit their working notes through a separate response field that is not subject to the same constraints as the final answer. Naive wrappers that fall back to `reasoning_content` when `content` is empty (e.g. when the token budget is exhausted mid-thought) print raw secrets directly to logs.
## Workflow Routing
| Trigger | Companion / script |
| ------------------------------------------------------------------------ | ---------------------------------------------------------- |
| User asks to scan, classify, or audit sensitive content via a local LLM | [scripts/classify.py](scripts/classify.py) |
| User asks which local backend is running, or wants to probe availability | [scripts/detect-backend.sh](scripts/detect-backend.sh) |
| User asks for raw inference (no privacy constraints) | Use `classify.py --no-redact --raw` flag |
## Backends
| Backend | Default port | Auth | Endpoint |
| --------- | -----------: | ----------------------------- | ------------------------- |
| LM Studio | 1234 | Bearer token (`LMSTUDIO_API_KEY` in `.env`) | `/v1/chat/completions` |
| Ollama | 11434 | none | `/v1/chat/completions` (OpenAI-compat) or `/api/chat` (native) |
| MLX | 8080 | none (default `mlx_lm.server`)| `/v1/chat/completions` |
`scripts/detect-backend.sh` probes each port in that order and returns the first responding backend's identifier on stdout.
## Three layers of leak prevention
**Layer 1 — prompt-side classification, not reproduction.** The system prompt asks the model for *categories* + counts, never raw values. Output schema is enforced: a markdown table with `Category | Count | Risk`. Free-text answers are rejected by the wrapper.
**Layer 2 — drop `reasoning_content` entirely.** The wrapper reads only `choices[0].message.content`. If `content` is empty (token budget exhausted before the final answer emitted), the wrapper reports `[scan failed: model produced no final content]` and discards `reasoning_content` unread. Falling back to reasoning is forbidden because chain-of-thought emits raw values mid-thought regardless of prompt constraints.
**Layer 3 — post-redaction regex sweep on the model's output.** Even with the first two layers, the wrapper runs a final pass that masks:
- IPv4 literals: `\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b` → `<IP>`
- IPv6 literals: `\b([0-9a-fA-F]{1,4}:){2,7}[0-9a-fA-F]{1,4}\b` → `<IPV6>`
- Email-like: `\b[\w.+-]+@[\w-]+\.[\w.-]+\b` → `<EMAIL>`
- FQDN-like (any TLD ≥ 2 chars): `\b[a-z0-9][\w-]*\.[a-z]{2,}(?:\.[a-z]{2,})*\b` → `<HOST>`
- Short identifiers with at least one digit (a common machine-name pattern): `\b[a-z]{2,4}-?\d+[a-z0-9-]*\b` → `<ID>`. The leading-letter cap and required digit avoid over-matching English hyphenated words like `keep-private`.
## When NOT to use this skill
Structural audits (counting how many `Host`, `HostName`, `IdentityFile`, `ProxyJump` directives exist in an SSH config) are deterministic grep work. The LLM adds no signal and creates leak risk. Prefer:
```sh
for directive in Host HostName User Port IdentityFile ProxyJump ProxyCommand Match Include; do
count=$(grep -ciE "^\s*${directive}\s" "$file")
[ "$count" -gt 0 ] && printf " %-16s %s\n" "$directive" "$count"
done
```
The LLM earns its place when the question is semantic ("does this file expose infrastructure topology?", "is this comment hint a leak vector?") and the answer can be expressed as a category + count.
## Constraints
- **Never read `reasoning_content`** from the response. Treat it as if the field does not exist. If `content` is empty, the scan failed; do not patch with reasoning.
- **Never echo raw model output to chat** before running it through the Layer 3 redaction pass.
- **Always set a tight `max_tokens` budget** when the goal is a fixed-schema reply (e.g. 200 for a category table). High budgets give reasoning models more room to leak.
- **Reject free-text responses.** If the model output does not match the structured schema declared in the prompt, treat it as a failed scan and do not display the raw text.
- **Auth via env var, not flag.** `LMSTUDIO_API_KEY` reads from `~/.env` or the process environment. Never pass keys as positional arguments visible in `ps aux`.
- **Backend detection is deterministic.** `detect-backend.sh` probes ports in a fixed order (LM Studio 1234, Ollama 11434, MLX 8080) and stops at the first responder. No DNS, no env-var fallback that could be spoofed.
- **Tiny models may emit nothing useful.** Reasoning models with ≤ 8B parameters often spend the entire token budget on chain-of-thought and produce empty `content`. Prefer non-reasoning models (e.g. `qwen2.5-7b-instruct`, `gpt-oss-20b`) for classification tasks.From N4M3Z/forge-core, EUPL-1.2.
More from N4M3Z/forge-core
- 0.520score
ForgeSkill
N4M3Z
Create, validate, evaluate, and iterate skills for forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
AdoptArtifact
N4M3Z
Adopt a community skill from an upstream URL into forge.
SkillCFreshness: C★ 4Claude Code - 0.515score
Brainstorming
N4M3Z
Collaborative ideation before implementation — explore context, clarify intent, propose approaches.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildAgent
N4M3Z
Create, validate, or audit agent definitions.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildHook
N4M3Z
Create and validate module hooks.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildModule
N4M3Z
Design, build, and validate forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildPlugin
N4M3Z
Create, validate, and publish Claude Code plugins from forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildRule
N4M3Z
Create, validate, or place behavioral rules in forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildSkill
N4M3Z
Create and validate skills for forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
DesignFrontend
N4M3Z
Build distinctive, production-grade frontend interfaces that avoid generic AI aesthetics.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
DesignSpec
N4M3Z
Write a formal design spec from brainstorming output or requirements.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
ExecutePlan
N4M3Z
Execute an implementation plan inline — task by task in a single session — then finish the work: verify, present integration options (merge, PR, keep…
SkillCFreshness: C★ 4Claude Code +9
Signals
- Stars
- 4
- Forks
- 3
- Open issues
- 8
- Last commit (this folder)
- Jul 13, 2026 (3 months ago)
- Last release
- Apr 16, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- EUPL-1.2
- Repository
- github.com/N4M3Z/forge-core
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from N4M3Z
- 0.520score
ForgeSkill
N4M3Z
Create, validate, evaluate, and iterate skills for forge modules.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
HtmlPlayground
N4M3Z
Generate single-file HTML demos comparing techniques side-by-side.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
Brainstorming
N4M3Z
Collaborative ideation before implementation — explore context, clarify intent, propose approaches.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildAgent
N4M3Z
Create, validate, or audit agent definitions.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
BuildHook
N4M3Z
Create and validate module hooks.
SkillCFreshness: C★ 4Claude Code +9 - 0.515score
AdoptArtifact
N4M3Z
Adopt a community skill from an upstream URL into forge.
SkillCFreshness: C★ 4Claude Code
Cite this page
LocalModel skill. Agent Mart. https://agentmart.dev/skills/n4m3z-localmodel (last updated 2026-10-24)