Skip to content

Releases: oopsla5xx/open-context

v0.1.7 — Resolver made framework-agnostic (component_reason data-driven, .ts/.tsx fix) + Next.js benchmark

Choose a tag to compare

@oopsla5xx oopsla5xx released this 18 Aug 10:02

Changed

  • resolver.py: component_reason() no longer hardcodes Rails component descriptions (controller/operation/form/model/serializer) — now derives text from context.yaml's own components.<name>.responsibility/patterns, so a non-Rails component named model (or any of those 5 names) no longer leaks Rails-specific text (ApplicationForm, attr_reader).
  • resolver.py: .ts/.tsx files are no longer misclassified as directories in file inference; the "specific file" check is now based on whether the path has any extension, not a hardcoded .rb/.py/.js allowlist.
  • resolver.py: the directory-search naming hint is now derived from context.yaml's own files.<component>.naming templates instead of a hardcoded .rb hint.
  • __init__.py, cli.py: wording no longer describes the resolver itself as Rails-only (the architecture validate subcommand remains genuinely Rails-only and its help text still says so).

Added

  • examples/nextjs-sample/ — a Next.js App Router / Server Actions reference sample (context.yaml + tests + context-decisions.md), generated via /oc-setup, used to benchmark the resolver on a second framework.
  • docs/nextjs-effectiveness-report.md — coverage/amplification/token-reduction results against the Next.js sample, and the writeup of both bugs fixed in this release.
  • docs/nextjs-real-world-test-report.md — results from testing against an unmodified third-party Next.js repo; surfaces an open finding (not fixed in this release): the resolver's routing threshold requires ≥2 keyword hits, so natural single-concept phrasing can silently fail to route.

Verification

  • pytest tests/test_hook_integration.py -v — 19/19 pass
  • Manual resolve smoke tests against both rails-hmvc-sample and nextjs-sample confirm no regression and no Rails-text leakage

v0.1.0 — First public release

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 02:56

Open:Context v0.1.0

Zero-LLM context routing for AI agents — hooks into every Claude Code prompt, injects only the relevant domain, files, and architecture rules.

Install

/plugin marketplace add oopsla5xx/open-context
/plugin install open-context@open-context

Open any project — the setup wizard starts automatically on first session.

What's included

Two hooks

  • SessionStart — detects first-run, triggers /oc-setup wizard automatically
  • UserPromptSubmit — fires on every prompt; injects matched context or exits silently

Five skills

  • /oc-setup — wizard (scope · language · framework · architecture · actors) → generates context.yaml + test files → agentic validate loop
  • /oc-init — regenerate context.yaml from docs and source code
  • /oc-resolve — debug routing for any task
  • /oc-validate — phrasing coverage + amplification safety check
  • /oc-validate-architecture — static scan of 6 HMVC compliance rules (R1–R6)

CLI (optional, for CI)

pip install git+https://github.com/oopsla5xx/open-context.git
open-context validate --context path/to/context.yaml --tests path/to/tests/

Known unmeasured

- Hook latency on NFS / Docker / WSL2 cross-filesystem setups has not been benchmarked
- Output truncation frequency at 20+ domains has not been measured in production

See README and CHANGELOG for full details.

v0.1.6 — File-existence check, --strict flag, CI workflow, wizard CI question

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 15:28

What's new

File-existence check in open-context validate

Every path declared in related_components (domain + subtype level) is now
verified against the filesystem. Both files and directories are checked.

  • --repo PATH — repo root for the check (default: current directory)
  • --strict — exits 1 if any paths are missing or phrasing risk is MEDIUM/HIGH (<80%)
  • 0/N paths found → distinct repo-mismatch warning instead of listing each path individually

GitHub Actions CI (plugin repo)

.github/workflows/validate-example.yml — validates the reference example
on every push/PR touching src/, examples/, tests/, pyproject.toml,
or the workflow file itself.

Wizard now offers CI setup (Question 6)

/oc-setup asks whether to generate .github/workflows/open-context-validate.yml
for the project repo. Uses --strict hardcoded. Wizard writes the file only —
user reviews and commits.

v0.1.5 — Token savings visible in UI

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 14:30

What's new

Token savings stats now appear as a native system notice in the Claude Code UI
(systemMessage) — visible to the user, not passed to the model.

Previously the stats were appended to additionalContext (invisible in UI).
Correct mechanism is the top-level systemMessage field which Claude Code
renders as a separate UI notice, distinct from the conversation.

Changes

  • resolve_hook.py — stats moved from additionalContext to systemMessage
  • tests/ — updated assertions to verify systemMessage field and confirm
    stats do not bleed into additionalContext

v0.1.4 — Token savings stats

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 08:50

What's new

After each matched prompt, open-context now appends a token savings line
to the injected context:

[open-context] 91% token reduction (1.2 KB injected vs 14.8 KB full context)

The baseline is format_report() run across all domains (no threshold filter),
giving a concrete all-domain ceiling to compare against.
Stats are best-effort — a failure never breaks context injection.

Changes

  • resolver.py — new include_all_domains keyword-only param on resolve()
    for the baseline pass
  • resolve_hook.py — computes and appends savings stats after truncation
  • 5 new integration tests: presence, numeric sanity, no-match guard,
    truncation survivability, superset contract

v0.1.3 — Add communication language to setup wizard

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 04:39

What's New

Added Question 2 — Communication language to the setup wizard (between Scope and Programming language). Claude switches to the chosen language immediately after Q2 and saves it as communication_language in settings.

Wizard is now 6 questions: Scope → Communication language → Programming language → Framework → Architecture → Actors.

v0.1.2 — Wizard triggers on first message after install

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 04:15

What's Fixed

Wizard now starts on first message after install — previously, the setup wizard only triggered at the next new session. Now the UserPromptSubmit hook detects first-run (no context.yaml, no settings) and injects the wizard trigger on the user's very first message — within the same session as install.

What's Changed

  • hook_utils.py — added context_yaml_candidates(), is_first_run(), and WIZARD_TRIGGER as shared utilities
  • resolve_hook.py — uses context_yaml_candidates() (removes duplicated traversal logic) and injects wizard trigger on first-run
  • session_hook.py — refactored to use shared utilities; shrinks to ~10 lines of logic

Upgrade

claude plugin update open-context@open-context

v0.1.1 - Fix plugin load failure on install

Choose a tag to compare

@oopsla5xx oopsla5xx released this 16 Aug 03:44

Release notes:

What's Fixed

Plugin failed to load after install — Claude Code auto-loads hooks/hooks.json
from the plugin root. Having "hooks": "./hooks/hooks.json" in plugin.json
caused a duplicate-hook error on every install. Removed the redundant field.

This was the only blocker preventing the plugin from activating after marketplace install.

Upgrade

claude plugin update open-context@open-context

Or reinstall:
claude plugin uninstall open-context@open-context
claude plugin install open-context@open-context