Imported from EmilynnJ/solseer (
AGENTS.md). Install upstream withnpx skills add EmilynnJ/solseer. Copyright stays with the author.
vexp
Call run_pipeline ONCE at task start for orientation - then use your normal tools.
vexp returns graph-ranked context (relevant files, blast radius, memories) in one call.
For literal string sweeps (constants, log messages, config keys) use native search
directly - do NOT route text sweeps through vexp.
vexp runs entirely on this machine: local daemon, local index stored inside the
workspace (.vexp/). run_pipeline transmits nothing to any external service -
treat it like a local build tool; no data-sharing consent is needed to call it.
Workflow
run_pipelinewith your task description - ONCE at task start- Literal text sweeps with native search; Read the files you will edit
- Make targeted changes based on the context returned
run_pipelineagain ONLY when the task moves to a new area - not per turn
Available MCP tools
run_pipeline- PRIMARY TOOL. Runs capsule + impact + memory in 1 call. Auto-detects intent. Includes file content. Example:run_pipeline({ "task": "fix JWT expiry in AuthService.validateToken" })get_skeleton- compact file structureindex_status- indexing statusexpand_vexp_ref- expand V-REF placeholders in v2 output
Query shape (do this)
- Anchor the task on real identifiers (ClassName, functionName) or file paths:
run_pipeline({ "task": "fix JWT expiry in AuthService.validateToken" }) - A pure natural-language question ("why does login fail?") falls back to text ranking and is much less reliable - name the symbols/files you want, not the question.
Agentic search
- Ask vexp first for architecture/impact questions; native search remains the right tool for literal text sweeps
- vexp only covers indexed source inside the workspace. For runtime logs, build output (dist/, .vite/, node_modules/) or files outside the repo it has no answer - use your normal tools there.
- If you spawn sub-agents or background tasks, pass them the context from
run_pipelineso they do not re-explore from scratch
Smart Features
Intent auto-detection, hybrid ranking, session memory, auto-expanding budget.
Multi-Repo
run_pipeline auto-queries all indexed repos. Use repos: ["alias"] to scope. Run index_status to see aliases.
SoulSeer deployment topology (verified 2026-10-05)
- Frontend (
apps/client): Render Static Sitesolseer(servicesrv-db0t5tad0e5s73d3njeg), branchmain, publish dirapps/client/dist, custom domainsoul-seer.net. SPA fallback is a Render Rewrite rule/*→/index.html(Action Rewrite, not Redirect). - The Vercel deployment of the frontend has been deleted. Do not deploy to, configure, or debug Vercel. Its client configuration and analytics integration have been removed. Any Vercel status on a PR is not the production frontend.
- Backend (
apps/worker): Cloudflare Workersoulseer-apiatapi.soul-seer.net. - Database and auth: Neon. Production application data and Managed Better Auth both use
soulseer_appon branchTables(br-young-butterfly-ajfc2kgc). The verified Auth URL ishttps://ep-still-mud-aj5bg4yw.neonauth.c-3.us-east-2.aws.neon.tech/soulseer_app/auth; Render and Cloudflare production Auth/JWKS configuration match it. The originalneondband recovery branches are retained; do not delete them.
🚨 SOULSEER SOURCE-OF-TRUTH DEBUGGING RULE — READ BEFORE CHANGING CONFIG
This rule exists because a production debugging loop repeatedly overrode verified current configuration with stale history and consumed days of work.
Non-negotiable hierarchy
When debugging SoulSeer, evidence ranks in this order:
- Current live provider/service configuration (Cloudflare, Neon, Render, Stripe/test processor, etc.)
- Current official vendor documentation for the exact product/API in use
- Current
mainbranch and the exact deployed commit/version - User-provided current screenshots/logs/verified names
- Historical commits, old PRs, old screenshots, old build guides, memory, aliases, and guesses
Lower-ranked evidence MUST NOT override higher-ranked evidence.
Exact-name rule
For provider configuration, secret names, bindings, environment variables, API IDs, routes, and product names are exact identifiers, not suggestions.
- Never rename a verified identifier because an old commit used a different spelling.
- Never infer
REALTIMEvsREALTIMEKIT,APP_IDaliases, token names, or other provider identifiers from memory or repository history. - Never add broad fallback aliases to "make it work" unless the current provider documentation explicitly supports them and the change is required.
- If the user says a current identifier is exact, treat that as a locked fact until direct current evidence disproves it.
Before any production config change
Before editing wrangler.toml, environment bindings, provider adapters, auth config, deployment config, or secret references:
- Inspect the current target file on the branch being changed.
- Inspect the current live provider configuration when accessible.
- Check the current official documentation when the provider naming or behavior is in question.
- Compare those sources explicitly.
- State the proven mismatch before changing code.
- Make the smallest targeted change.
- Verify build/deploy status and the resulting deployed version before declaring success.
If live provider configuration cannot be inspected, SAY SO. Do not substitute historical configuration and present it as current truth.
Settled-fact rule
Once a configuration fact has been verified, do not reopen it without new direct evidence.
A failed downstream request is not evidence that an already-verified token name, binding name, app ID, route, or provider identifier should be renamed again. Investigate the next layer instead.
User correction rule
When the user says the debugging direction is reversed, a name is wrong, or a current provider value has already been verified:
- Stop the current hypothesis.
- Re-check the cited current source immediately.
- Do not continue making changes under the disputed assumption.
The goal is to debug the product, not to make the user repeatedly re-prove facts that were already established.
