Skip to content

Feature flags (ralph gated dark) + README rewrite around jobs to be done#523

Merged
kasperjunge merged 4 commits into
mainfrom
feat/feature-flags-gate-ralph-install
Jun 8, 2026
Merged

Feature flags (ralph gated dark) + README rewrite around jobs to be done#523
kasperjunge merged 4 commits into
mainfrom
feat/feature-flags-gate-ralph-install

Conversation

@kasperjunge

Copy link
Copy Markdown
Collaborator

Summary

This branch bundles two related-but-distinct pieces of work:

1. Env-var feature flags + gating ralph install (ships dark)

  • New agr/features.py: env-var-backed feature-flag registry. feature_enabled("ralph") reads AGR_ENABLE_RALPH; truthy = 1/true/yes/on (case-insensitive). Adding a new gated feature is a one-line registry entry.
  • Ralph install is gated at every decision point — local type detection, remote skill→ralph fallback, package expansion, and sync — plus a defense-in-depth guard in fetch_and_install_ralph.
  • With the flag off (default), ralph installation is invisible: generic not-found errors, silent skips, and no leakage of the flag's existence in any output.
  • With the flag on, behavior is unchanged from today.
  • Contributor guide at docs/contributing/feature-flags.md (excluded from the published site so the feature stays dark for users).

2. README rewrite around the jobs to be done

  • Restructured README.md around five concrete jobs: install from a repo, use local skills, share a team environment, upgrade, and run once with agrx.
  • Made the team + package-manager framing explicit (npm / PyPI / uv) and spelled out the payoff of versioning, distribution, and team use.
  • Local skills (agr add ./path) and agrx are now first-class, previously buried or absent.

Testing

  • uv run pytest: 1308 passed, 5 skipped (6 pre-existing tests/test_docs.py failures from an earlier docs-distill commit, unrelated to this branch).
  • uv run ruff check ., uv run ty check, uv run mkdocs build --strict all pass.

🤖 Generated with Claude Code

Kasper Junge and others added 4 commits June 7, 2026 21:44
… can ship dark

Introduce agr/features.py, a reusable env-var-backed feature-flag registry
(feature_enabled), and register ralph -> AGR_ENABLE_RALPH. Add a
defense-in-depth guard in fetch_and_install_ralph that raises RalphNotFoundError
when the flag is off, with no message revealing the flag.

Tests cover flag resolution and the installer guard on/off. An autouse conftest
fixture enables the flag suite-wide so existing behaviour is preserved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… default

Add feature_enabled("ralph") checks at every ralph-install decision point so
that, with AGR_ENABLE_RALPH unset, agr behaves as if ralph install does not
exist — local add falls through to a generic not-a-skill error, remote add goes
skill->package, and package/sync ralph deps are skipped silently with no flag
leakage. With the flag on, behaviour is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…re one line

Excluded from the published site (contributing/**) so the dark ralph
feature and AGR_ENABLE_RALPH stay invisible to end users.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Center the README on five concrete jobs (install from a repo, use local
skills, share a team environment, upgrade, run once) and make the
team / package-manager-for-skills framing and its payoff explicit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kasperjunge kasperjunge merged commit 5b49b18 into main Jun 8, 2026
1 of 3 checks passed
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