repo-nexus 0.6.16 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +22 -20
  2. package/README.md +13 -2
  3. package/docs/CLI.md +93 -0
  4. package/docs/FAQ.md +180 -0
  5. package/docs/ai-instructions.sample.md +25 -0
  6. package/docs/cli/index.md +4 -4
  7. package/docs/cli/tooling.md +3 -2
  8. package/docs/cli/workspace.md +27 -39
  9. package/docs/examples/local-overrides.md +2 -2
  10. package/docs/faq/index.md +1 -1
  11. package/docs/guide/architecture.md +1 -1
  12. package/docs/guide/configuration.md +4 -4
  13. package/docs/guide/workflows.md +1 -1
  14. package/docs/plugins/authoring.md +2 -2
  15. package/docs/plugins/index.md +2 -2
  16. package/docs/plugins/karpathy-llm.md +25 -25
  17. package/docs/rnex.example.yaml +160 -0
  18. package/lib/ai.sh +62 -41
  19. package/lib/commands/completion.sh +52 -7
  20. package/lib/commands/init.sh +6 -1
  21. package/lib/commands/plugin.sh +5 -5
  22. package/lib/commands/status.sh +38 -7
  23. package/lib/commands/sync.sh +135 -285
  24. package/lib/commands/system.sh +22 -8
  25. package/lib/core.sh +4 -4
  26. package/lib/hooks.sh +175 -56
  27. package/lib/plugins.sh +9 -5
  28. package/lib/repos.sh +5 -1
  29. package/lib/workspace.sh +39 -0
  30. package/package.json +3 -3
  31. package/rnex +39 -16
  32. package/templates/ai-instructions.sample.md +25 -0
  33. package/templates/rnex.example.yaml +5 -5
  34. package/toolkit/plugins/karpathy-llm/README.md +30 -29
  35. package/toolkit/plugins/karpathy-llm/agents/rnex-wiki-curator.agent.md +1 -1
  36. package/toolkit/plugins/karpathy-llm/hooks/after_init.sh +6 -0
  37. package/toolkit/plugins/karpathy-llm/hooks/after_sync.sh +76 -0
  38. package/toolkit/plugins/karpathy-llm/hooks/git_post-commit.sh +51 -0
  39. package/toolkit/plugins/karpathy-llm/hooks/git_post-merge.sh +51 -0
  40. package/toolkit/plugins/karpathy-llm/hooks/git_pre-commit.sh +51 -0
  41. package/toolkit/plugins/karpathy-llm/hooks/git_pre-push.sh +49 -0
  42. package/toolkit/plugins/karpathy-llm/instructions/rnex-scaffolding-meta-prompt.md +16 -16
  43. package/toolkit/plugins/karpathy-llm/instructions/rnex-wiki-architecture.md +4 -4
  44. package/toolkit/plugins/karpathy-llm/instructions.md +48 -0
  45. package/toolkit/plugins/karpathy-llm/plugin.yaml +9 -4
  46. package/toolkit/plugins/karpathy-llm/skills/rnex-wiki-ingest/SKILL.md +3 -3
  47. package/toolkit/plugins/karpathy-llm/skills/rnex-wiki-lint/SKILL.md +4 -4
  48. package/toolkit/plugins/karpathy-llm/workflows/rnex-wiki-ingest.md +5 -5
  49. package/toolkit/plugins/karpathy-llm/workflows/rnex-wiki-lint.md +4 -4
  50. package/toolkit/prompts/rnex-workspace-audit.md +1 -1
  51. package/toolkit/skills/rnex-workspace-audit/SKILL.md +1 -1
  52. package/toolkit/workflows/rnex-workspace-audit.md +1 -1
  53. package/lib/commands/fix.sh +0 -7
  54. package/templates/AGENTS.sample.md +0 -17
package/CHANGELOG.md CHANGED
@@ -7,28 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Changed
11
- - **Replaced `rnex fix` with `rnex sync` (with optional `--fix` flag)**:
12
- - `rnex sync` without `--fix` performs a dry-run audit, checking workspace configuration, `.gitignore`, `.ignore`, AI routing instructions (`AGENTS.md`, provider files), active/disabled plugin assets, member repository scaffolding, and multi-root workspace definitions, logging any inconsistencies without mutating files.
13
- - `rnex sync --fix` (or `-f`) executes full workspace reconciliation, schema upgrades, prompt/workflow synchronization, and asset repairs.
14
- - `rnex fix` is maintained as a deprecated backward-compatible alias for `rnex sync --fix`, displaying a deprecation notice directing users to `rnex sync --fix`.
15
- - All workspace documentation, guides, prompt templates, and AI routing instructions updated to reference `rnex sync` and `rnex sync --fix`.
10
+ ## [0.6.16] - 2026-10-14
11
+
12
+ ### Removed
13
+ - **`rnex fix` and `rnex status --fix`**: Removed in favor of `rnex sync` as the sole reconciliation command.
14
+ - **Legacy Sample Instructions**: Removed `docs/AGENTS.sample.md` and replaced it with `docs/ai-instructions.sample.md` (and root `templates/ai-instructions.sample.md`).
15
+ - **Core Plugin Decoupling**: Removed all hardcoded plugin references from `./rnex` core so the CLI is strictly plugin-agnostic.
16
16
 
17
17
  ### Added
18
- - **Modular Test Suite Architecture**:
19
- - Decomposed monolithic `tests/test_cli.sh` (996 lines, 36 tests) into modular, single-responsibility test suites under `tests/suites/`:
20
- - `01_core_cli.sh`: Workspace initialization, member repository lifecycle (`add`, `exec`, `enable`, `disable`, `clone`, `remove`), version inspection, and shell completion generators.
21
- - `02_plugins_basic.sh`: Plugin discovery, inspection, activation, scoping under `.rnex/plugins/`, and delimited `AGENTS.md` routing.
22
- - `03_config_workspace.sh`: Two-level configuration (`.local.rnex.yaml`), Git ignore reconciliation, status reporting, multi-root workspace generation, version-aware upgrade engine, and standardized skills/workflows synchronization.
23
- - `04_git_hooks.sh`: Automated Git hooks installation, runtime status, workspace-level `git_hooks` configuration, execution dispatch, custom wrapper preservation, and repository `.githooks/` chaining.
24
- - `05_ai_providers.sh`: AI provider plugins synchronization and surgical non-destructive cleanup across Copilot, Claude, Gemini, Cursor, and Windsurf.
25
- - `06_plugins_advanced.sh`: Deterministic plugin updates, Karpathy LLM Wiki configurable paths (`wiki_dir`, `raw_dir`), and complete plugin deactivation with prompt cleanup.
26
- - Shared test harness `tests/test_helper.sh` provides dynamic repository root resolution, isolated workspace scaffolding, standardized assertion helpers (`run_test`, `pass`, `fail`), and standalone execution detection.
27
- - Backward-compatible runner `tests/test_cli.sh` executes all 36 tests sequentially and supports running individual suites by name or numeric prefix (e.g. `./tests/test_cli.sh 06`).
28
- - **Standardized Root `templates/` Directory**:
29
- - Moved reference configuration and instruction templates ([`rnex.example.yaml`](file:///Users/admin/Projects/ai/repo-nexus/templates/rnex.example.yaml) and [`AGENTS.sample.md`](file:///Users/admin/Projects/ai/repo-nexus/templates/AGENTS.sample.md)) from `docs/` to root [`templates/`](file:///Users/admin/Projects/ai/repo-nexus/templates/).
30
- - Pruned empty placeholder directory `toolkit/templates/`.
31
- - Updated config pointers in [`rnex.yaml`](file:///Users/admin/Projects/ai/repo-nexus/rnex.yaml) and [`init.sh`](file:///Users/admin/Projects/ai/repo-nexus/lib/commands/init.sh), package distribution in [`package.json`](file:///Users/admin/Projects/ai/repo-nexus/package.json), and cleaned up VitePress exclusions in [`docs/.vitepress/config.mts`](file:///Users/admin/Projects/ai/repo-nexus/docs/.vitepress/config.mts).
18
+ - **Plugin Lifecycle Hooks & Contract**: Added `before_<cmd>` and `after_<cmd>` hook execution across all mutating commands (`init`, `install`, `add`, `clone`, `exec`, `remove`, `enable`, `disable`, `rnex-dir`, `sync`, `update`, `hooks`, `plugin`) while bypassing read-only commands (`status`, `list`, `completion`).
19
+ - **Compiled AI Instructions (`.rnex/ai-instructions.md`)**: `rnex sync` now compiles a unified instruction file inside `.rnex/` from the merged 2-level config (`rnex.yaml` + `.local.rnex.yaml`), base AI instructions template, and active plugin fragments.
20
+ - **Event-Driven Auto-Sync**: Added checksum-based config drift detection (`.rnex/.sync_stamp`) that automatically runs `rnex sync --quiet` on any `rnex` CLI command or new AI session start without background file watchers. Includes shell prompt hook (`_rnex_auto_sync`) in `rnex completion` and Git hooks (`post-merge`, `post-checkout`, `pre-commit`).
21
+ - **Contribution Guide**: Added `CONTRIBUTION.md` documenting POSIX shell standards, plugin contract rules, and test workflows.
22
+ - **Modular Test Suite Architecture**: Decomposed monolithic test runner into modular test suites under `tests/suites/` (`01_core_cli.sh` through `06_plugins_advanced.sh`) with shared harness `tests/test_helper.sh`.
23
+ - **Maintainer Release Hooks Relocation**: Relocated maintainer Git hooks from `.githooks/` into `scripts/githooks/` to ensure workspace root strictly encapsulates internal state in `.rnex/`.
24
+
25
+ ### Changed
26
+ - **`rnex sync` Scope**: Synchronizes `rnex-*` prompts from `toolkit/prompts/` and `.rnex/` directories in both the nexus root and enabled member repositories (`repos/<name>/.rnex/`).
27
+ - **Root AI Provider Files (`AGENTS.md`, `CLAUDE.md`)**: Simplified to contain only a single strict directive instructing agents to read and follow `.rnex/ai-instructions.md`.
28
+ - **`karpathy-llm` Plugin Defaults & Hooks**: Migrated `karpathy-llm` to lifecycle hooks and changed default paths from `/wiki/` to `.rnex/wiki` (curated knowledge base) and from `/raw/` to `./docs` (raw intake).
29
+
30
+ ### Fixed
31
+ - Unified GitHub repository URLs across `README.md`, `scripts/install.sh`, and the documentation site to canonical `unoxen/repo-nexus`.
32
+ - Removed legacy `symlinks` references from repository metadata.
33
+
32
34
 
33
35
  ## [0.6.7] - 2026-10-12
34
36
 
package/README.md CHANGED
@@ -14,7 +14,7 @@ A **simple, lightweight Virtual Meta-Repo companion** for multi-repo workspaces
14
14
  - **Two-Level Configuration as Source of Truth**: Shared team manifest in `rnex.yaml` with machine-specific overrides in `.local.rnex.yaml` (highest priority).
15
15
  - **One Command Team Onboarding**: Teammates clone the meta-repo and run `rnex clone` to clone and configure all member repos in seconds.
16
16
  - **Cross-Repo Batch Operations**: Run arbitrary commands across all active repositories with `rnex exec <command>`.
17
- - **Scoped Plugins & Context Packs**: Modular plugin packages scoped under `.rnex/plugins/<plugin-name>/` with support for domain directories (e.g. `raw/` and `wiki/` for `karpathy-llm`).
17
+ - **Scoped Plugins & Context Packs**: Modular plugin packages scoped under `.rnex/plugins/<plugin-name>/` with support for domain directories (e.g. `.rnex/wiki` and `./docs` for `karpathy-llm`).
18
18
  - **Zero Dependencies**: Pure POSIX shell CLI (`rnex`). Works out of the box across macOS, Linux, and Windows (WSL/Git Bash).
19
19
 
20
20
  > 📖 **Documentation & Guides**
@@ -38,6 +38,7 @@ A **simple, lightweight Virtual Meta-Repo companion** for multi-repo workspaces
38
38
  - [Quick Start](#quick-start)
39
39
  - [Project Structure](#project-structure)
40
40
  - [Running Tests](#running-tests)
41
+ - [Contributing](#contributing)
41
42
  - [License](#license)
42
43
 
43
44
  ---
@@ -137,8 +138,9 @@ repo-nexus/
137
138
  ├── rnex # CLI executable (POSIX shell)
138
139
  ├── AGENTS.md # Routing-only universal AI instructions
139
140
  ├── CHANGELOG.md # Release history and migration notes
141
+ ├── CONTRIBUTION.md # POSIX standards, testing setup, and plugin contract
140
142
  ├── templates/
141
- │ ├── AGENTS.sample.md # Template for routing-only AGENTS.md
143
+ │ ├── ai-instructions.sample.md # Base template for .rnex/ai-instructions.md
142
144
  │ └── rnex.example.yaml # Full config reference with examples
143
145
  ├── docs/
144
146
  │ ├── guide/ # Architecture, workflows, and getting started
@@ -148,6 +150,9 @@ repo-nexus/
148
150
  │ └── faq/ # Frequently Asked Questions
149
151
  ├── .github/
150
152
  │ └── workflows/ci.yml # GitHub Actions CI workflow
153
+ ├── scripts/
154
+ │ ├── install.sh # Zero-dependency standalone installer
155
+ │ └── githooks/ # Repository maintainer release hooks
151
156
  ├── tests/
152
157
  │ ├── test_cli.sh # Main test runner
153
158
  │ ├── test_helper.sh # Shared test harness and utilities
@@ -170,6 +175,12 @@ repo-nexus/
170
175
 
171
176
  ---
172
177
 
178
+ ## Contributing
179
+
180
+ Contributions are welcome! Please read [CONTRIBUTION.md](CONTRIBUTION.md) for coding standards (pure POSIX shell, ShellCheck compliance), local development & maintainer Git hooks setup, automated test workflows, and plugin authoring guidelines.
181
+
182
+ ---
183
+
173
184
  ## License
174
185
 
175
186
  [MIT](LICENSE)
package/docs/CLI.md ADDED
@@ -0,0 +1,93 @@
1
+ # Repo Nexus (`rnex`) — Command Line Interface Reference
2
+
3
+ Lightweight zero-dependency Virtual Meta-Repo companion for multi-repo workspaces and shared AI context.
4
+
5
+ ## Core Commands
6
+
7
+ | Command | Syntax | Description |
8
+ |:---|:---|:---|
9
+ | `init` | `rnex init [-y] [--claude] [--copilot] [--gemini] [--cursor] [--windsurf] [--code-workspace]` | Initialize a new workspace, create `rnex.yaml`, `.rnex/`, `.ignore`, and minimal AI instructions. |
10
+ | `sync` | `rnex sync [-y] [--quiet]` | **Single reconciliation command**: syncs prompts, `.rnex/` harness, plugins, and compiles `.rnex/ai-instructions.md`. |
11
+ | `status` | `rnex status` | **Strictly read-only**: inspect workspace health, active repos, loaded config, git hooks, sync stamp, and plugins. |
12
+ | `add` | `rnex add <name> <git-url> [--local]` | Register a new member repository and clone into `./repos/<name>`. |
13
+ | `clone` | `rnex clone` | Clone all declared member repositories missing from disk. |
14
+ | `exec` | `rnex exec <command>` | Run an arbitrary shell command across all active member repositories. |
15
+ | `list` | `rnex list` | List all member repositories and their active status. |
16
+ | `enable` | `rnex enable <name> [--local]` | Enable a member repository in active workspace. |
17
+ | `disable` | `rnex disable <name> [--local]` | Disable a member repository in active workspace. |
18
+ | `remove` | `rnex remove <name> [-y]` | Unregister repository and remove its clone from disk. |
19
+ | `rnex-dir`| `rnex rnex-dir <enable\|disable> <name>` | Toggle `.rnex/` harness inside a member repository. |
20
+ | `update` | `rnex update [-y] [--quiet]` | Check configuration version and upgrade to latest schema (delegates to `sync`). |
21
+ | `hooks` | `rnex hooks <install\|uninstall\|status>` | Manage automated workspace Git hooks. |
22
+ | `plugin` | `rnex plugin <list\|info\|enable\|disable\|update>` | Manage workspace plugins. |
23
+ | `completion` | `rnex completion <bash\|zsh\|fish>` | Generate shell completions with event-driven auto-sync hooks. |
24
+
25
+ ---
26
+
27
+ ## Reconciliation Command: `rnex sync`
28
+
29
+ `rnex sync` is the sole reconciliation command (`rnex fix` and `rnex status --fix` have been removed).
30
+
31
+ ```bash
32
+ rnex sync [-y|--yes] [-q|--quiet]
33
+ ```
34
+
35
+ ### Reconciliation Actions
36
+ 1. **Config Version Upgrade**: Detects schema drift and non-destructively upgrades `rnex.yaml` if older than the installed CLI version.
37
+ 2. **Git Ignore & Search Indexing**: Reconciles `.gitignore` (ignoring `repos/*` and `.local.rnex.yaml`) and `.ignore` (un-ignoring `repos/*` for search tools).
38
+ 3. **Plugin Sync**: Prunes disabled plugins and deterministically copies enabled plugin assets, rules, workflows, templates, and executable lifecycle hooks into `.rnex/plugins/<plugin-name>/`.
39
+ 4. **Compiled AI Instructions**: Compiles `.rnex/ai-instructions.md` by combining the base template with active configuration and all enabled plugin `instructions.md` fragments. Top-level provider files (`AGENTS.md`, `CLAUDE.md`, etc.) receive only a single strict directive pointing to `.rnex/ai-instructions.md`.
40
+ 5. **Prompt Sync**: Copies all operational prompts matching `rnex-*` from `toolkit/prompts/` into configured AI assistant directories (Claude, Gemini, Cursor, Windsurf, Copilot) and workspace prompt directories.
41
+ 6. **Harness Sync**: Reconciles root `.rnex/` and member repository harnesses (`repos/<name>/.rnex/`) for all enabled member repositories where `rnex_dir: true`.
42
+ 7. **Git Hooks**: Installs or reconciles workspace Git hooks in `.rnex/hooks` when `git_hooks: true`.
43
+ 8. **Multi-Root Workspace**: Synchronizes `.code-workspace` folder mappings when `code_workspace: true`.
44
+ 9. **Event-Driven Auto-Sync Scripts & Stamp**: Generates `.rnex/bin/auto-sync.sh` and updates `.rnex/.sync_stamp`.
45
+
46
+ ---
47
+
48
+ ## Plugin Contract & Lifecycle Hooks
49
+
50
+ Repo Nexus core is 100% agnostic of specific plugins. All mutating commands dispatch lifecycle hooks before and after execution.
51
+
52
+ ### Action Command Hook Dispatcher
53
+ All state-changing commands (`init`, `add`, `clone`, `exec`, `remove`, `enable`, `disable`, `rnex-dir`, `sync`, `update`, `hooks`, `plugin`) trigger:
54
+ - `before_<cmd>` hook
55
+ - `after_<cmd>` hook
56
+
57
+ Read-only commands (`status`, `list`, `completion`, `--help`, `--version`) bypass lifecycle hooks.
58
+
59
+ ### Plugin Manifest & File Layout
60
+ Plugins are authored in `toolkit/plugins/<plugin-name>/` and synced into `.rnex/plugins/<plugin-name>/`:
61
+
62
+ ```text
63
+ toolkit/plugins/<plugin-name>/
64
+ ├── plugin.yaml # Manifest (name, version, description, default config)
65
+ ├── instructions.md # Optional AI instruction fragment merged during rnex sync
66
+ ├── hooks/ # POSIX /bin/sh hook scripts (chmod +x)
67
+ │ ├── after_sync.sh # Executes after workspace reconciliation
68
+ │ ├── after_init.sh # Executes after workspace initialization
69
+ │ └── before_remove.sh # Executes before member repo removal
70
+ ├── rules/ # AI assistant behavioral rules
71
+ ├── workflows/ # Standardized agent workflow procedures
72
+ └── templates/ # Default files and scaffold templates
73
+ ```
74
+
75
+ ### Environment Context Passed to Hooks
76
+ Every lifecycle hook receives the following environment variables:
77
+
78
+ | Variable | Description |
79
+ |:---|:---|
80
+ | `RNEX_ROOT` | Absolute path to the Repo Nexus workspace root directory. |
81
+ | `RNEX_CONFIG_MERGED` | Path to the active workspace configuration (`rnex.yaml`). |
82
+ | `RNEX_PLUGIN_DIR` | Path to the scoped plugin directory (`.rnex/plugins/<plugin-name>`). |
83
+ | `RNEX_CMD` | The command being executed (e.g., `sync`, `init`, `add`). |
84
+ | `RNEX_ARGS` | Arguments passed to the command. |
85
+ | `RNEX_QUIET` | Set to `1` when `--quiet` was passed, `0` otherwise. |
86
+
87
+ ### Karpathy LLM Wiki Plugin
88
+ The `karpathy-llm` plugin uses lifecycle hooks to manage its domain directories:
89
+ - **Default curated knowledge base (`wiki_dir`)**: `.rnex/wiki`
90
+ - **Default append-only raw intake (`raw_dir`)**: `./docs`
91
+ - **Master navigation index**: `.rnex/wiki/index.md`
92
+ - **Rolling orientation cache**: `.rnex/wiki/hot.md`
93
+ - **Operation log**: `.rnex/wiki/_log.md`
package/docs/FAQ.md ADDED
@@ -0,0 +1,180 @@
1
+ ---
2
+ title: Frequently Asked Questions
3
+ description: Comprehensive FAQ for Repo Nexus, covering architecture, Git internals, submodule pitfalls, two-level config, AI context routing, and system requirements.
4
+ ---
5
+
6
+ # Frequently Asked Questions (FAQ)
7
+
8
+ This document answers common architectural, operational, and technical questions about **Repo Nexus (`rnex`)**, why it exists, how it works as a **Virtual Meta-Repo for AI Agents**, how it handles Git autonomy, and how to use it effectively.
9
+
10
+ ---
11
+
12
+ ## General Setup & Philosophy
13
+
14
+ ### What is repo-nexus?
15
+
16
+ It is a zero-dependency **Virtual Meta-Repo companion** that organizes multiple independent Git repositories into a unified development workspace with shared AI routing context.
17
+
18
+ ---
19
+
20
+ ### How does it differ from traditional monorepo orchestrators?
21
+
22
+ Unlike heavy monorepo tools (such as Nx, Turborepo, or Bazel) that take over build pipelines, require unified lockfiles, and impose cross-package dependency graphs, `repo-nexus` acts strictly as an architectural companion. It does not replace your compiler, test runner, package manager, or build tooling.
23
+
24
+ ---
25
+
26
+ ### Does it require Git Submodules?
27
+
28
+ **No.** Member repositories are physically cloned into `./repos/<name>`. The workspace root `.gitignore` strictly ignores `repos/`. Each repository remains a 100% normal, autonomous Git repository with its own `.git` directory, remotes, branches, and commit history. There are no `.gitmodules`, no detached HEADs, and no submodule pointer commits.
29
+
30
+ ---
31
+
32
+ ### Why do I need rnex?
33
+
34
+ Modern AI coding assistants (Claude Code, Cursor, GitHub Copilot, Codex, Antigravity) are designed around a single project root. In real-world software development, applications are rarely confined to a single repository—they are split across frontends, backend APIs, shared packages, and infrastructure.
35
+
36
+ This creates two major frictions:
37
+ 1. **Siloed Context**: Opening one repository in an AI tool leaves the AI blind to API contracts, types, or services in other repositories, leading to hallucinations.
38
+ 2. **Onboarding Friction**: New team members must manually find and clone 5–10 repos, set up local folder structures, and configure tools.
39
+
40
+ **`rnex` solves both**:
41
+ - It unites repositories under one Virtual Meta-Repo root so AI assistants see the whole stack.
42
+ - It enables 1-command onboarding: teammates run `rnex clone` and every repository is cloned and wired up in seconds.
43
+
44
+ ---
45
+
46
+ ### Why not just use a monorepo or Git submodules?
47
+
48
+ | Solution | Drawbacks | How `rnex` compares |
49
+ | :--- | :--- | :--- |
50
+ | **Git Monorepo** | Heavy migration effort, combined CI/CD pipelines, complex permissions, slow checkouts. | **Zero migration**: Repositories remain completely independent with their own remotes and CI/CD pipelines. |
51
+ | **Git Submodules** | Detached HEAD states, tricky merge conflicts, complex multi-step commits, rigid coupling. | **Zero submodule friction**: Root Git ignores `repos/`. Repos are completely normal autonomous clones. |
52
+ | **Manual Multi-Window** | Juggling 5 IDE windows, copy-pasting API types, fragmented AI reasoning. | **Unified Workspace**: AI agents see the entire system from the meta-repo root. |
53
+
54
+ ---
55
+
56
+ ## Architecture & Mechanics
57
+
58
+ ### How does the Virtual Meta-Repo work?
59
+
60
+ When you initialize a workspace (`rnex init`), `rnex` creates:
61
+ 1. `rnex.yaml` (declaring member repository URLs and active plugins).
62
+ 2. Root `.gitignore` (ignoring `repos/` and `.local.rnex.yaml`).
63
+ 3. Routing-only `AGENTS.md` (directing AI assistants to configuration and plugins).
64
+ 4. `.rnex/` (strictly encapsulating all internal rnex assets and scoped plugins).
65
+
66
+ When you run `rnex add <name> <git-url>` or `rnex clone`, member repositories are cloned directly into `./repos/<name>`.
67
+
68
+ ---
69
+
70
+ ### Why use physical clones in `./repos/` instead of symlinks?
71
+
72
+ 1. **Universal Portability**: Zero symlink fragility. Works 100% natively on macOS, Linux, and Windows without elevated permissions or Developer Mode.
73
+ 2. **File Watcher & Tool Compatibility**: Native folders avoid known symlink bugs in IDE file watchers, bundlers, and linters.
74
+ 3. **Intuitive Simplicity**: Every project is right where you expect it in `./repos/<name>`.
75
+
76
+ ---
77
+
78
+ ### Can I use Git commands (pull, push, commit) on member repos?
79
+
80
+ **Yes.** Git operates completely normally.
81
+ When you or your IDE navigate into `repos/<name>/` and run `git status`, `git commit`, `git pull`, or `git push`, Git operates directly against that repository's own branches and remotes.
82
+
83
+ ---
84
+
85
+ ### Can AI agents create and modify files inside member repos?
86
+
87
+ **Yes.** Any file created or modified under `repos/<name>/...` (e.g. `repos/backend/src/api.ts`) is a real file inside that repository, immediately tracked by that repo's Git.
88
+
89
+ ---
90
+
91
+ ### Will rnex interfere with Git branches, remotes, or commit histories?
92
+
93
+ **No.** The workspace root `.gitignore` ignores `repos/`. The workspace Git repository never commits or interferes with member repository contents.
94
+
95
+ ---
96
+
97
+ ### How does batch execution (rnex exec) work?
98
+
99
+ Running `rnex exec <command>` iterates through every active, enabled repository in `./repos/` and executes the command within that directory. For example:
100
+
101
+ ```bash
102
+ rnex exec git status -s
103
+ rnex exec npm test
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Configuration & AI Context Routing
109
+
110
+ ### What is the two-level configuration model?
111
+
112
+ 1. **Repo Config (`rnex.yaml`)**: Shared team manifest committed to Git. Declares repo URLs, default enabled states, and plugins.
113
+ 2. **Local Config (`.local.rnex.yaml`)**: Machine-specific file ignored by Git. Takes **highest priority** and overrides repo settings.
114
+
115
+ ---
116
+
117
+ ### How does the enabled/disabled setting work?
118
+
119
+ Repositories support an `enabled: true|false` setting:
120
+ - **Default State**: Enabled (`true`). If omitted, the repository is automatically considered enabled.
121
+ - **Local Overrides**: If a team has 10 repos, but a developer only works on two, they can set `enabled: false` for the other eight in `.local.rnex.yaml`.
122
+ - **Disabled Repositories**: Skipped by `rnex clone`, `rnex exec`, and excluded from AI agent tasks.
123
+
124
+ CLI commands:
125
+ ```bash
126
+ rnex disable analytics --local # disable locally
127
+ rnex enable analytics # re-enable
128
+ ```
129
+
130
+ ---
131
+
132
+ ### What is the routing-only instructions pattern in AGENTS.md?
133
+
134
+ Top-level AI instructions (`AGENTS.md`, `CLAUDE.md`, etc.) do not include sprawling inlined rules or tool text. Instead, they act as **lean navigation routers**:
135
+ 1. Mandate reading `.local.rnex.yaml` (highest priority) and `rnex.yaml` first.
136
+ 2. Route agents to `.rnex/plugins/<plugin-name>/` for scoped plugin rules.
137
+ 3. Route agents to `repos/<name>/.rnex/` for member-specific instructions.
138
+
139
+ ---
140
+
141
+ ### What is the member repository `.rnex/` directory?
142
+
143
+ Repo Nexus initializes an isolated `.rnex/` folder inside each member repository (`repos/<name>/.rnex/`):
144
+ - Encapsulates Repo Nexus metadata and scoped plugin rules for that repository.
145
+ - Keeps member repository roots clean and untouched.
146
+ - Can be disabled at any time with `rnex rnex-dir disable <name>`.
147
+
148
+ ---
149
+
150
+ ### How are plugins structured and scoped?
151
+
152
+ Plugins are strictly scoped under `.rnex/plugins/<plugin-name>/`.
153
+ For example, the built-in `karpathy-llm` plugin places its rules, workflows, and instructions in `.rnex/plugins/karpathy-llm/`, while instantiating domain directories (`./docs` for intake documents and `.rnex/wiki` for curated knowledge) as specified by its architecture.
154
+
155
+ ---
156
+
157
+ ## Platforms & Setup
158
+
159
+ ### What are the system requirements? Does it work on Windows?
160
+
161
+ `rnex` is written in POSIX shell script (`/bin/sh`). It runs natively on:
162
+ - **macOS**
163
+ - **Linux**
164
+ - **Windows** (via WSL2, Git Bash, or MSYS2)
165
+
166
+ Because `rnex` uses standard physical folders and `git clone` instead of symlinks, it has zero symlink permission limitations on Windows.
167
+
168
+ ---
169
+
170
+ ### Does rnex have external runtime dependencies?
171
+
172
+ **No.** The `rnex` executable has zero external dependencies—no Node.js runtime, Python, or external package managers are required to execute the CLI.
173
+
174
+ ---
175
+
176
+ ### What files should be committed to Git?
177
+
178
+ In your Repo Nexus workspace Git repository:
179
+ - **Commit**: `rnex.yaml`, `AGENTS.md`, `docs/`, `toolkit/`, and `.gitignore`.
180
+ - **Do NOT Commit**: `repos/` and `.local.rnex.yaml` (both are strictly ignored by `.gitignore`).
@@ -0,0 +1,25 @@
1
+ # Multi-Repo AI Workspace Context
2
+
3
+ This workspace operates as a **Repo Nexus Virtual Meta-Repo** uniting independent repositories.
4
+
5
+ ## Routing Protocol for AI Assistants
6
+
7
+ ### Mandatory Session Startup
8
+ Execute in sequence before task execution:
9
+ 1. **Read Configuration First (Highest Priority)**: Read `.local.rnex.yaml` (if present) and `rnex.yaml` to identify active member repositories (`repos/`) and enabled plugins.
10
+ 2. **Plugin & Skill Routing**: Inspect active plugin instructions under `.rnex/plugins/<plugin-name>/`, and tools under `.rnex/skills/` and `.rnex/workflows/` when relevant.
11
+ 3. **Targeted Member Repository Access Only**: Navigate directly to specific files in `repos/<name>/` relevant to the user request. Avoid blind repository-wide scans or unbounded searches across `repos/`.
12
+
13
+ ## Subagents
14
+ Autonomous subagents are defined under `.rnex/agents/` and active plugin agents under `.rnex/plugins/<plugin-name>/agents/`.
15
+
16
+ ## Member Repositories (`repos/<name>/`)
17
+ Each member repository is an autonomous Git repository. For repository-specific instructions, inspect `repos/<name>/.rnex/`. Inspect only targeted files required for the task.
18
+
19
+ ## Workspace Maintenance
20
+ When workspace configuration, routing blocks, plugin assets, or member repository structures require reconciliation or schema upgrades:
21
+ - Run `rnex sync` (or `rnex status` to check workspace health).
22
+ - Use `rnex sync -y` to non-destructively apply configuration version upgrades automatically.
23
+
24
+ ## Git Operations
25
+ Commit and push changes directly within the respective member repository root (`repos/<name>/`).
package/docs/cli/index.md CHANGED
@@ -12,9 +12,9 @@ description: Fast reference cheatsheet for rnex commands, global options, enviro
12
12
  | Command | Category | Description |
13
13
  |:---|:---|:---|
14
14
  | [`rnex init`](workspace.md#rnex-init) | Workspace | Initialize a new Repo Nexus workspace. |
15
- | [`rnex status`](workspace.md#rnex-status) | Workspace | Inspect workspace health, clones, and AI instructions. |
16
- | [`rnex sync`](workspace.md#rnex-sync) | Workspace | Check workspace consistency, or reconcile with `--fix`. |
17
- | [`rnex update` / `upgrade`](workspace.md#rnex-update-alias-upgrade) | Workspace | Part of sync --fix: verify version, upgrade schema, and reconcile workspace. |
15
+ | [`rnex sync`](workspace.md#rnex-sync) | Workspace | Single reconciliation command: sync prompts, .rnex/ harness, and compile AI instructions. |
16
+ | [`rnex status`](workspace.md#rnex-status) | Workspace | Strictly read-only: inspect workspace health, active repos, loaded config, and plugins. |
17
+ | [`rnex update` / `upgrade`](workspace.md#rnex-update-alias-upgrade) | Workspace | Check configuration version and upgrade schema (delegates to `rnex sync`). |
18
18
  | [`rnex install`](workspace.md#rnex-install) | Workspace | Symlink `rnex` to `~/.local/bin`. |
19
19
  | [`rnex completion`](workspace.md#rnex-completion) | Workspace | Generate shell auto-completion for Zsh, Bash, or Fish. |
20
20
  | [`rnex version`](workspace.md#rnex-version) | Workspace | Display current installed CLI version. |
@@ -49,7 +49,7 @@ rnex [global-options] <command> [command-options] [arguments]
49
49
 
50
50
  ## Standardized Prompts Catalog
51
51
 
52
- Repo Nexus provides a standardized suite of operational prompt templates in `toolkit/prompts/` that sync to `.rnex/prompts/` during `rnex sync --fix` or `rnex init`.
52
+ Repo Nexus provides a standardized suite of operational prompt templates in `toolkit/prompts/` that sync during `rnex sync` or `rnex init`.
53
53
 
54
54
  AI assistants navigate workflows via the catalog index at `.rnex/prompts/index.md`:
55
55
 
@@ -21,9 +21,10 @@ rnex hooks install [--local]
21
21
  ```
22
22
 
23
23
  #### Installed Hooks:
24
- * **`post-merge`**: Runs `rnex sync --fix -y --quiet` automatically whenever `git pull` or upstream merges occur, ensuring newly added repositories and plugin updates sync instantly.
24
+ * **`post-merge`**: Runs `rnex sync -y --quiet` automatically whenever `git pull` or upstream merges change `rnex.yaml`, ensuring newly added repositories and plugin updates sync instantly.
25
+ * **`post-checkout`**: Runs `rnex sync -y --quiet` automatically whenever `rnex.yaml` changes across branch checkouts.
25
26
  * **`post-commit`**: Alerts the user if documentation or wiki files were committed without running maintenance linters.
26
- * **`pre-commit`**: Runs pre-commit validation triggers declared by active plugins.
27
+ * **`pre-commit`**: Runs `rnex sync -y --quiet` when configuration files are staged, and triggers plugin validation.
27
28
  * **`pre-push`**: Runs pre-push validation triggers before pushing to remote.
28
29
 
29
30
  ### `rnex hooks status`
@@ -47,35 +47,9 @@ rnex init -y --claude --hooks
47
47
 
48
48
  Performs comprehensive diagnostic and health checks across the workspace.
49
49
 
50
- ### Syntax
51
- ```sh
52
- rnex status
53
- ```
54
-
55
- ### What It Reports
56
- * **Configuration State**: Location and schema version of `rnex.yaml` and `.local.rnex.yaml`.
57
- * **Git Status**: Validation that `.gitignore` ignores `repos/` and local files, and whether `core.hooksPath` points to `.rnex/hooks`.
58
- * **AI Routing**: Status of universal `AGENTS.md`, `.rnex/skills/`, `.rnex/workflows/`, and provider prompts directories.
59
- * **Member Clones**: Health, branches, and `.rnex` state of every member repository.
60
-
61
- ```bash
62
- rnex status
63
- ```
64
-
65
- ```text
66
- [rnex] Workspace root: /workspace
67
- [rnex] Config: rnex.yaml (.local.rnex.yaml loaded)
68
- [rnex] Repositories: 2 active, 0 disabled
69
- ```
70
-
71
- ---
72
-
73
50
  ## `rnex sync`
74
51
 
75
- Synchronizes workspace assets, validates configuration, and audits or reconciles AI routing instructions, skills, workflows, active plugins, and member clones.
76
-
77
- - **Audit Mode (Default)**: When run without `--fix`, inspects workspace configuration, Git ignores, routing blocks, plugin assets, and member repositories, logging any issues or inconsistencies without mutating files.
78
- - **Reconcile Mode (`--fix`)**: Reconciles configuration schema, updates instruction files, synchronizes skills/workflows, mirrors operational prompts, and fixes inconsistencies.
52
+ Reconciles workspace configuration, prompts, plugins, `.rnex/` harness directories, and compiles `.rnex/ai-instructions.md`. `rnex sync` is the sole reconciliation command in Repo Nexus (`rnex fix` and `rnex status --fix` are removed).
79
53
 
80
54
  ### Syntax
81
55
  ```sh
@@ -85,27 +59,41 @@ rnex sync [options]
85
59
  ### Options
86
60
  | Option | Shorthand | Type | Default | Description |
87
61
  |:---|:---|:---|:---|:---|
88
- | `--fix` | `-f` | boolean | `false` | Apply reconciliation fixes across workspace, routing, plugins, and repos. |
89
- | `--yes` | `-y` | boolean | `false` | Automatically confirm schema upgrades if prompted (used with `--fix`). |
62
+ | `--yes` | `-y` | boolean | `false` | Automatically confirm schema upgrades if prompted. |
90
63
  | `--quiet` | `-q` | boolean | `false` | Quiet mode; suppresses non-error informational messages (ideal for hooks). |
91
- | `--upgrade` | | boolean | `false` | Explicitly trigger version upgrade reconciliation (implies `--fix`). |
92
64
 
93
- ### Reconciliation Actions (with `--fix`)
65
+ ### Reconciliation Actions
94
66
  1. Upgrades configuration schema non-destructively if an older version is detected.
95
67
  2. Re-verifies `.gitignore` rules for `repos/` and local configs, and ensures `.ignore` contains `!repos/*`.
96
- 3. Inserts or updates delimited routing blocks in universal `AGENTS.md` and active provider instruction files (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.windsurfrules`).
97
- 4. Syncs base workflows to `.rnex/workflows/` and base skills to `.rnex/skills/`, purging any legacy `.rnex/prompts/`.
98
- 5. Mirrors operational prompts to enabled AI providers (`.github/prompts/`, `.claude/commands/`, etc.).
99
- 6. Re-syncs enabled plugin assets into `.rnex/plugins/` and member `repos/<name>/.rnex/`.
68
+ 3. Compiles `.rnex/ai-instructions.md` by combining the base template with active configuration and all enabled plugin `instructions.md` fragments. Writes single strict directive to top-level provider files (`AGENTS.md`, `CLAUDE.md`, etc.).
69
+ 4. Syncs operational prompts matching `rnex-*` from `toolkit/prompts/` to workspace and configured AI assistant prompt directories.
70
+ 5. Re-syncs enabled plugin assets into `.rnex/plugins/` and member `repos/<name>/.rnex/`.
71
+ 6. Dispatches plugin lifecycle hooks (`before_sync`, `after_sync`).
100
72
  7. Reconciles automated Git hooks in `.rnex/hooks/` against `git_hooks` config.
101
- 8. Re-creates member `.rnex/` scaffolding in active repositories.
73
+ 8. Re-creates member `.rnex/` scaffolding in active repositories (`rnex_dir: true`).
102
74
  9. Updates multi-root `.code-workspace` folder mappings if configured.
75
+ 10. Generates `.rnex/bin/auto-sync.sh` and updates the checksum stamp in `.rnex/.sync_stamp`.
76
+
77
+ ---
78
+
79
+ ## `rnex status`
80
+
81
+ Inspects workspace health and diagnostic information. `rnex status` is **strictly read-only** with no `--fix` flag.
82
+
83
+ ### Syntax
84
+ ```sh
85
+ rnex status
86
+ ```
87
+
88
+ ### Execution
89
+ * **Strictly Read-Only**: Inspects workspace health, active repos, loaded config files (`rnex.yaml` and `.local.rnex.yaml`), git hooks, and plugins.
90
+ * **Sync Diagnostics**: Compares current config checksums against `.rnex/.sync_stamp` and suggests running `rnex sync` if configuration drift is detected.
103
91
 
104
92
  ---
105
93
 
106
94
  ## `rnex update` (alias: `upgrade`)
107
95
 
108
- Runs version verification and invokes the unified `rnex sync --fix` reconciliation engine to upgrade workspace configuration and routing instructions to match the installed CLI version.
96
+ Runs version verification and invokes `rnex sync` to upgrade workspace configuration and routing instructions to match the installed CLI version.
109
97
 
110
98
  ### Syntax
111
99
  ```sh
@@ -120,9 +108,9 @@ rnex upgrade [options]
120
108
  | `--quiet` | `-q` | boolean | `false` | Suppress non-error informational messages. |
121
109
 
122
110
  ### Relationship with `rnex sync`
123
- `rnex update` is part of the `rnex sync` command family:
111
+ `rnex update` delegates directly to `rnex sync`:
124
112
  * **Upfront Version Diagnostics**: Compares `version:` in `rnex.yaml` against the installed CLI version. If already matching, it reports that the workspace is up to date.
125
- * **Unified Reconciliation**: Delegates directly to `rnex sync --fix`, ensuring configuration schema upgrades, instruction updates (`AGENTS.md`, provider files), skills/workflows sync, and plugin reconciliation occur in a single, idempotent pass.
113
+ * **Unified Reconciliation**: Delegates directly to `rnex sync`, ensuring configuration schema upgrades, instruction updates (`AGENTS.md`, `.rnex/ai-instructions.md`), prompts, and plugin reconciliation occur in a single, idempotent pass.
126
114
  * **Non-Destructive Migration**: Upgrades schema keys while preserving comments, indentation, and custom configurations.
127
115
 
128
116
  ---
@@ -39,10 +39,10 @@ plugins:
39
39
 
40
40
  ### Apply the Overrides
41
41
 
42
- Run `rnex sync --fix` to reconcile your local configuration:
42
+ Run `rnex sync` to reconcile your local configuration:
43
43
 
44
44
  ```bash
45
- rnex sync --fix
45
+ rnex sync
46
46
  ```
47
47
 
48
48
  ```text
package/docs/faq/index.md CHANGED
@@ -150,7 +150,7 @@ Repo Nexus initializes an isolated `.rnex/` folder inside each member repository
150
150
  ### How are plugins structured and scoped?
151
151
 
152
152
  Plugins are strictly scoped under `.rnex/plugins/<plugin-name>/`.
153
- For example, the built-in `karpathy-llm` plugin places its rules, workflows, and instructions in `.rnex/plugins/karpathy-llm/`, while instantiating external functional directories (`raw/` for intake documents and `wiki/` for curated knowledge) as specified by its architecture.
153
+ For example, the built-in `karpathy-llm` plugin places its rules, workflows, and instructions in `.rnex/plugins/karpathy-llm/`, while instantiating domain directories (`./docs` for intake documents and `.rnex/wiki` for curated knowledge) as specified by its architecture.
154
154
 
155
155
  ---
156
156
 
@@ -79,7 +79,7 @@ This workspace operates as a Repo Nexus Virtual Meta-Repo uniting independent re
79
79
  ```
80
80
 
81
81
  ::: tip Preserving Custom Instructions
82
- Any custom guidelines, rules, or documentation authored outside the `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->` markers are strictly preserved during `rnex sync --fix` or plugin synchronization.
82
+ Any custom guidelines, rules, or documentation authored outside the `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->` markers are strictly preserved during `rnex sync` or plugin synchronization.
83
83
  :::
84
84
 
85
85
  ### 5. Multi-Root IDE Workspaces
@@ -90,7 +90,7 @@ plugins:
90
90
  | `version` | string | Current CLI version | Schema version compatibility check. |
91
91
  | `repos_dir` | string | `./repos` | Relative or absolute path where member repos are cloned. |
92
92
  | `code_workspace` | boolean \| string | `false` | Enables `.code-workspace` generation. Pass a string for custom filename. |
93
- | `git_hooks` | boolean | `true` | Configures `.rnex/hooks` as `core.hooksPath` during `rnex sync --fix`. |
93
+ | `git_hooks` | boolean | `true` | Configures `.rnex/hooks` as `core.hooksPath` during `rnex sync`. |
94
94
  | `repos` | map | `{}` | Map of member repository specifications keyed by name. |
95
95
  | `plugins` | map | `{}` | Map of enabled plugins and their configuration options. |
96
96
 
@@ -124,9 +124,9 @@ plugins:
124
124
  After modifying configuration files directly, reconcile the workspace state:
125
125
 
126
126
  ```bash
127
- rnex sync --fix
127
+ rnex sync
128
128
  ```
129
129
 
130
- ::: tip Audit vs. Reconcile
131
- Running `rnex sync` without `--fix` audits the workspace and logs any detected configuration inconsistencies without modifying files. Adding `--fix` applies the reconciliation.
130
+ ::: tip Status & Auto-Sync
131
+ Running `rnex status` inspects workspace health and checks if configuration is in sync with `.rnex/.sync_stamp`. Running `rnex sync` applies full reconciliation and updates the sync stamp. Workspace commands (like `rnex list`) also automatically trigger auto-sync whenever configuration changes.
132
132
  :::
@@ -66,7 +66,7 @@ If a command fails in any repository, `rnex exec` exits immediately with that co
66
66
  Repo Nexus includes an automated hook runner configured via `core.hooksPath = .rnex/hooks`.
67
67
 
68
68
  ### Core Automated Hooks
69
- 1. **`post-merge`**: When you pull updates to the meta-repo (`git pull`), the hook automatically executes `rnex sync --fix` to:
69
+ 1. **`post-merge`**: When you pull updates to the meta-repo (`git pull`), the hook automatically executes `rnex sync -y --quiet` if `rnex.yaml` changed to:
70
70
  * Clone newly declared member repositories.
71
71
  * Update AI routing instructions (`AGENTS.md`, etc.).
72
72
  * Sync plugin changes.