Skip to content

New Server Submission: PickySteve - #401

Open
KernelLord wants to merge 1 commit into
fuzzylabs:mainfrom
KernelLord:add-pickysteve
Open

New Server Submission: PickySteve#401
KernelLord wants to merge 1 commit into
fuzzylabs:mainfrom
KernelLord:add-pickysteve

Conversation

@KernelLord

Copy link
Copy Markdown

Repository: https://github.com/KernelLord/pickysteve
Version: 0.1.0
MCP Protocol: 2025-06-18 (stdio transport via the mcp Python SDK)
Language: Python 3.11
Category: Community Servers (submitted to Under Review per process)

Description:
Skill router and context picker for coding agents. A cheap local model routes each prompt to the right skill via hybrid BM25 + embedding retrieval (RRF-fused), cross-encoder rerank with a calibrated floor, and an LLM judge, then assembles one minimal context bundle. Exposes pick_context(request) and list_skills() over stdio.

Security Features:

  • Dual-scan prompt-injection gate (stackone-defender, ONNX): scans the raw request AND every retrieved document before assembly, fail-closed
  • Per-call random-nonce boundaries around untrusted content (static delimiters proved forgeable — finding documented in SECURITY_AUDIT.md)
  • Red-team results: 100% detection / 0 bypasses on a 180-payload corpus (14 evasion families), 0/43 false positives on the real skill registry
  • CI: SHA-pinned actions, minimal token permissions, OSV-Scanner, Trivy, CodeQL, Bandit, OSSF Scorecard, Dependabot

Required Permissions:

  • Local filesystem read of its own skill registry (no network required in the security path; local Ollama by default)
  • Optional outbound HTTPS only if configured with a cloud model endpoint

Deployment:

  • Install: git clone + uv (Python 3.11 venv); no PyPI package yet
  • Config via PS_* environment variables (see pickysteve/config.py)
  • Connector installer wires 18 coding agents (MCP stdio + OpenAI-compatible proxy on :8077)

Known security considerations (documented in the repo):

  • Latin-script non-English injection (e.g. Spanish) can bypass the bundled English-only classifier in some cases
  • Thresholds are calibrated per judge model; swapping models requires re-running eval/calibrate.py

Disclosure: I'm the project author; this PR was prepared by Claude (agent) on my behalf. Happy to have the scanners tear into it — that's the point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant