pnpm bootstrap
pnpm validate
pnpm dev:landing
pnpm exampleUse pnpm --filter @jcode.labs/ragmir <script> for Core-only work. The pinned Node version lives in
mise.toml; activate mise in your shell or run local workspace commands with that pinned version.
Published packages require Node.js 22 or later, matching their manifests and release gate.
Ragmir source is AGPL-3.0-only from v3.0.0 onward, with a separate commercial licensing option.
Keep package metadata, license files, public documentation, and release notes aligned. External code
contributions need confirmed rights for both licensing paths before merge.
packages/ragmir-core: published CLI, library, MCP server, and skills.packages/ragmir-chat: optional local chat add-on.packages/ragmir-tts: optional audio add-on.- Core must install and start without Chat or TTS. Keep both as optional peer integrations and load them only when their command is used.
packages/ragmir-landing: self-contained static Astro documentation and product site.
Generated dist/, .astro/, release-artifacts/, and .ragmir/ directories are ignored. Do not
commit them. The root README is the canonical documentation entrypoint; keep package READMEs short.
When code changes public behavior, commands, configuration, supported formats, architecture, or
product claims, update the relevant docs and landing in the same change. For internal-only changes,
verify both surfaces and leave them unchanged when no update is needed.
Keep the English setup prompt identical across Core, the landing, root and package READMEs,
docs/quick-start.md, and the wiki. The public-surface smoke test enforces repository copies.
Lead public documentation with the value proposition, a working quick start, and the strongest
guarantees. Move operational depth to focused guides instead of repeating it across READMEs.
Present team use as one positive workflow: merge reviewed changes upstream, run rgr team sync,
receive a ready private index. Keep snapshots and low-level safeguards in focused advanced guides.
Every commit promoted to main that can trigger semantic-release must include these exact body
sections with at least one bullet each: Release highlights:, Release details:, and
Verification:. Highlights state user outcomes, details group meaningful work by product area,
and verification names the gates actually run. Never reduce a release to a generic subject line or
raw commit list. Keep commit body lines within Commitlint's 100-character limit. When a release
bullet wraps, indent every continuation line by at least two spaces; the release notes generator
joins those lines into one complete public bullet.
Ragmir stores and retrieves local cited context. It has no hosted document store, account system,
native desktop shell, or cloud-vendor deployment configuration. Keep OCR optional and
local, remote model downloads explicit, and normal confidential retrieval offline.
Describe Core as model-agnostic: users can connect their preferred AI or automation, or keep the
consumer local. Qwen and Gemma are optional Chat profiles, never Core or MCP requirements.
For repeated retrieval in a stateful Node.js process, use one RagmirClient per project root and
close it during shutdown. Ragmir does not provide an HTTP server or fixed port; network-facing hosts
own transport security, authentication, authorization, and rate limits.
Git-backed team sync treats the current branch upstream as the declared authority. Fetch only that
branch, fast-forward only a clean non-divergent history, then ingest incrementally. Never stash,
reset, rebase, create a merge commit, or delete the active index. --no-pull keeps branch updates
manual; fetch and ingest failures preserve the last valid local index when one exists.
Metadata-only snapshots are advanced diagnostics for exact or non-Git drift. Never include source
text or absolute project paths, choose an authoritative copy, or modify peer sources.
Package upgrades preserve the last validated index until an incompatible replacement passes staged
generation validation and activates atomically. Older configs keep safe defaults; never require
deleting .ragmir/storage/ as the first repair step.
This project is indexed by GitNexus as jcode-ragmir (2005 symbols, 4448 relationships, 165 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
Index stale? Run
node .gitnexus/run.cjs analyzefrom the project root. It auto-selects an available runner. No.gitnexus/run.cjsyet?npx gitnexus analyze(npm 11 crash →npm i -g gitnexus; #1939).
- MUST run impact analysis before editing any symbol. Before modifying a function, class, or method, run
impact({target: "symbolName", direction: "upstream"})and report the blast radius (direct callers, affected processes, risk level) to the user. - MUST run
detect_changes()before committing to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch:detect_changes({scope: "compare", base_ref: "main"}). - MUST warn the user if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
- When exploring unfamiliar code, use
query({search_query: "concept"})to find execution flows instead of grepping. It returns process-grouped results ranked by relevance. - When you need full context on a specific symbol (callers, callees, and participating execution flows), use
context({name: "symbolName"}). - For security review,
explain({target: "fileOrSymbol"})lists taint findings (source→sink flows; needsanalyze --pdg).
- NEVER edit a function, class, or method without first running
impacton it. - NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
- NEVER rename symbols with find-and-replace. Use
rename, which understands the call graph. - NEVER commit changes without running
detect_changes()to check affected scope.
| Resource | Use for |
|---|---|
gitnexus://repo/jcode-ragmir/context |
Codebase overview, check index freshness |
gitnexus://repo/jcode-ragmir/clusters |
All functional areas |
gitnexus://repo/jcode-ragmir/processes |
All execution flows |
gitnexus://repo/jcode-ragmir/process/{name} |
Step-by-step execution trace |
| Task | Read this skill file |
|---|---|
| Understand architecture / "How does X work?" | .claude/skills/gitnexus/gitnexus-exploring/SKILL.md |
| Blast radius / "What breaks if I change X?" | .claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md |
| Trace bugs / "Why is X failing?" | .claude/skills/gitnexus/gitnexus-debugging/SKILL.md |
| Rename / extract / split / refactor | .claude/skills/gitnexus/gitnexus-refactoring/SKILL.md |
| Tools, resources, schema reference | .claude/skills/gitnexus/gitnexus-guide/SKILL.md |
| Index, status, clean, wiki CLI commands | .claude/skills/gitnexus/gitnexus-cli/SKILL.md |