{"id":50308729,"url":"https://github.com/stefanimp/context-prism","last_synced_at":"2026-05-28T19:00:44.496Z","repository":{"id":360725840,"uuid":"1251430303","full_name":"stefanimp/context-prism","owner":"stefanimp","description":"Multilingual, token-aware context routing for Obsidian and AI assistants.","archived":false,"fork":false,"pushed_at":"2026-05-27T17:01:12.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T17:17:20.791Z","etag":null,"topics":["ai","ai-assistants","context-engineering","context-routing","knowledge-management","local-first","markdown","multilingual","note-taking","obsidian","obsidian-plugin","productivity","token-optimization","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stefanimp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T15:11:31.000Z","updated_at":"2026-05-27T17:01:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stefanimp/context-prism","commit_stats":null,"previous_names":["stefanimp/context-prism"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/stefanimp/context-prism","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanimp%2Fcontext-prism","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanimp%2Fcontext-prism/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanimp%2Fcontext-prism/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanimp%2Fcontext-prism/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefanimp","download_url":"https://codeload.github.com/stefanimp/context-prism/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanimp%2Fcontext-prism/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33622070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistants","context-engineering","context-routing","knowledge-management","local-first","markdown","multilingual","note-taking","obsidian","obsidian-plugin","productivity","token-optimization","typescript"],"created_at":"2026-05-28T19:00:22.545Z","updated_at":"2026-05-28T19:00:44.491Z","avatar_url":"https://github.com/stefanimp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eContext Prism\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eMultilingual, token-aware context routing for Obsidian and AI assistants.\u003c/strong\u003e\u003c/p\u003e\n  \u003cp\u003ePrepare compact local context packs so AI tools can inspect fewer notes before they answer.\u003c/p\u003e\n\u003c/div\u003e\n\n![Context Prism hero](assets/context-prism-hero.svg)\n\nContext Prism turns an Obsidian vault into a local retrieval layer. It ranks notes related to the active file, explains why they were selected, estimates avoided context, and copies a compact Markdown pack that can be pasted into ChatGPT, Claude, Codex, Antigravity, Cursor, or any assistant that benefits from focused context.\n\nNothing is sent to external services. The index is built locally from Markdown files through the Obsidian plugin API.\n\n## Demo\n\n![Context Prism demo](assets/context-prism-demo.gif)\n\n## Highlights\n\n- Token-aware context packs for AI-assisted workflows\n- Passive suggestions for the active note\n- Multilingual indexing profiles: `multilingual`, `en`, `es`, `fr`, `de`, `it`, `pt`\n- Mixed-language vault support through comma-separated language profiles\n- Title, alias, metadata, and TF-IDF vocabulary ranking\n- Explainable candidate reasons and snippets\n- Optional review modal for inserting durable wiki-links\n- Folder include and exclude filters\n- No telemetry, network calls, or external AI dependency\n\n## Why It Exists\n\nAI assistants often waste context by reading too many notes before discovering which files matter. Context Prism moves that discovery step into the vault:\n\n1. The active note becomes the query.\n2. Related notes are ranked locally.\n3. The user copies a compact context pack.\n4. The assistant receives focused evidence instead of broad vault dumps.\n\nThe result is a more controlled workflow for large vaults, multilingual notes, and AI-assisted knowledge work.\n\n## Usage\n\n1. Open a Markdown note.\n2. Check the status bar for prepared context candidates.\n3. Run `Copy AI context pack for current note`.\n4. Paste the pack into your AI assistant before asking for analysis, writing help, or implementation planning.\n5. Optionally run `Review link suggestions for current note` to insert selected links under the configured footer heading.\n\n## Language Support\n\nContext Prism defaults to `multilingual`, which removes common stopwords across supported language profiles. For more precise ranking, configure `Index languages` in settings:\n\n```text\nen\nes\nen, es\nfr, de, it\nmultilingual\n```\n\nThe current language layer is lexical and Unicode-aware. It is designed for local retrieval, not translation or semantic embedding.\n\n## Development\n\nUse Node.js 20.19 or newer. Node.js 22 LTS is recommended.\n\n```bash\nnpm install\nnpm run dev\n```\n\nProduction validation:\n\n```bash\nnpm run typecheck\nnpm test\nnpm run build\nnpm audit\n```\n\n## Manual Installation\n\nCopy these files into `\u003cvault\u003e/.obsidian/plugins/context-prism/`:\n\n- `main.js`\n- `manifest.json`\n- `styles.css`\n\nReload Obsidian and enable Context Prism under Community plugins.\n\n## Project Docs\n\n- [Architecture](docs/architecture.md)\n- [AI context routing](docs/ai-context-routing.md)\n- [AI assistant compatibility](docs/ai-assistant-compatibility.md)\n- [Testing](docs/testing.md)\n\n## Release Checklist\n\n1. Update `manifest.json`, `package.json`, and `versions.json`.\n2. Run `npm run typecheck`, `npm test`, `npm run build`, and `npm audit`.\n3. Create a GitHub release with a tag that exactly matches `manifest.json`.\n4. Attach `main.js`, `manifest.json`, and `styles.css`.\n\nPushing a matching version tag can run the release workflow and attach those assets automatically.\n\n## Privacy\n\nContext Prism reads Markdown files through the local Obsidian API and stores settings in the plugin data file. It does not make network requests, collect analytics, or send note content outside the vault.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanimp%2Fcontext-prism","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanimp%2Fcontext-prism","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanimp%2Fcontext-prism/lists"}