repo-nexus 0.7.35 → 0.7.38

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 (43) hide show
  1. package/lib/ai.sh +26 -27
  2. package/lib/commands/completion.sh +6 -15
  3. package/lib/commands/status.sh +0 -1
  4. package/lib/commands/sync.sh +0 -1
  5. package/lib/commands/system.sh +34 -6
  6. package/lib/hooks.sh +2 -8
  7. package/lib/workspace.sh +4 -4
  8. package/package.json +8 -9
  9. package/CHANGELOG.md +0 -363
  10. package/docs/.gitkeep +0 -0
  11. package/docs/CLI.md +0 -99
  12. package/docs/FAQ.md +0 -180
  13. package/docs/cli/execution.md +0 -81
  14. package/docs/cli/index.md +0 -81
  15. package/docs/cli/repos.md +0 -129
  16. package/docs/cli/tooling.md +0 -92
  17. package/docs/cli/workspace.md +0 -169
  18. package/docs/examples/ai-workflows.md +0 -54
  19. package/docs/examples/local-overrides.md +0 -70
  20. package/docs/examples/monorepo-coexistence.md +0 -80
  21. package/docs/examples/multi-repo-workspace.md +0 -100
  22. package/docs/faq/index.md +0 -180
  23. package/docs/guide/architecture.md +0 -86
  24. package/docs/guide/configuration.md +0 -129
  25. package/docs/guide/getting-started.md +0 -117
  26. package/docs/guide/why-repo-nexus.md +0 -48
  27. package/docs/guide/workflows.md +0 -123
  28. package/docs/index.md +0 -83
  29. package/docs/plugins/authoring.md +0 -69
  30. package/docs/plugins/claude.md +0 -109
  31. package/docs/plugins/copilot.md +0 -46
  32. package/docs/plugins/cursor.md +0 -106
  33. package/docs/plugins/gemini.md +0 -112
  34. package/docs/plugins/index.md +0 -120
  35. package/docs/plugins/karpathy-llm.md +0 -203
  36. package/docs/plugins/windsurf.md +0 -106
  37. package/docs/public/dark_logo.svg +0 -15
  38. package/docs/public/home.png +0 -0
  39. package/docs/public/light_logo.svg +0 -15
  40. package/docs/public/logo.legacy.png +0 -0
  41. package/docs/public/robots.txt +0 -3
  42. package/docs/rnex.example.yaml +0 -152
  43. package/toolkit/scripts/.gitkeep +0 -0
package/lib/ai.sh CHANGED
@@ -21,36 +21,35 @@ $RNEX_LOCAL_CONFIG_FILE
21
21
  .rnex.local.yaml
22
22
  GI_EOF
23
23
  log_ok "Created .gitignore (ignoring repos/ and $RNEX_LOCAL_CONFIG_FILE)"
24
- return 0
25
- fi
26
-
27
- # 1. Strip any legacy lint_trigger_counter entries if present
28
- if grep -q "lint_trigger_counter" "$_gi" 2>/dev/null; then
29
- _tmp="$(mktemp)"
30
- grep -v "lint_trigger_counter" "$_gi" > "$_tmp" && mv "$_tmp" "$_gi"
31
- log_ok "Removed legacy lint trigger counter entries from .gitignore"
32
- fi
24
+ else
25
+ # 1. Strip any legacy lint_trigger_counter entries if present
26
+ if grep -q "lint_trigger_counter" "$_gi" 2>/dev/null; then
27
+ _tmp="$(mktemp)"
28
+ grep -v "lint_trigger_counter" "$_gi" > "$_tmp" && mv "$_tmp" "$_gi"
29
+ log_ok "Removed legacy lint trigger counter entries from .gitignore"
30
+ fi
33
31
 
34
- # 2. Strip legacy .rnex/ entries if present (.rnex/ contains tracked plugins, skills, and hooks)
35
- if grep -qE '^[ ]*#?[ ]*Repo Nexus internal state' "$_gi" 2>/dev/null || grep -qE '^\.rnex/?$' "$_gi" 2>/dev/null; then
36
- _tmp="$(mktemp)"
37
- grep -vE '(^[ ]*#?[ ]*Repo Nexus internal state|^\.rnex/?$)' "$_gi" > "$_tmp" && mv "$_tmp" "$_gi"
38
- log_ok "Removed .rnex/ from .gitignore (.rnex should be tracked in git)"
39
- fi
32
+ # 2. Strip legacy .rnex/ entries if present (.rnex/ contains tracked plugins, skills, and hooks)
33
+ if grep -qE '^[ ]*#?[ ]*Repo Nexus internal state' "$_gi" 2>/dev/null || grep -qE '^\.rnex/?$' "$_gi" 2>/dev/null; then
34
+ _tmp="$(mktemp)"
35
+ grep -vE '(^[ ]*#?[ ]*Repo Nexus internal state|^\.rnex/?$)' "$_gi" > "$_tmp" && mv "$_tmp" "$_gi"
36
+ log_ok "Removed .rnex/ from .gitignore (.rnex should be tracked in git)"
37
+ fi
40
38
 
41
- # 3. Ensure repos/* is ignored
42
- if ! grep -q "^repos" "$_gi" 2>/dev/null; then
43
- printf '\n# Member repos (managed by rnex)\nrepos/*\n!repos/.gitkeep\n' >> "$_gi"
44
- log_dim "Added repos/* to .gitignore"
45
- fi
39
+ # 3. Ensure repos/* is ignored
40
+ if ! grep -q "^repos" "$_gi" 2>/dev/null; then
41
+ printf '\n# Member repos (managed by rnex)\nrepos/*\n!repos/.gitkeep\n' >> "$_gi"
42
+ log_dim "Added repos/* to .gitignore"
43
+ fi
46
44
 
47
- # 4. Ensure local config files are ignored
48
- if ! grep -qF "$RNEX_LOCAL_CONFIG_FILE" "$_gi" 2>/dev/null; then
49
- printf '\n# Local machine-specific configuration\n%s\n' "$RNEX_LOCAL_CONFIG_FILE" >> "$_gi"
50
- log_dim "Added $RNEX_LOCAL_CONFIG_FILE to .gitignore"
51
- fi
52
- if ! grep -qF ".rnex.local.yaml" "$_gi" 2>/dev/null; then
53
- printf '.rnex.local.yaml\n' >> "$_gi"
45
+ # 4. Ensure local config files are ignored
46
+ if ! grep -qF "$RNEX_LOCAL_CONFIG_FILE" "$_gi" 2>/dev/null; then
47
+ printf '\n# Local machine-specific configuration\n%s\n' "$RNEX_LOCAL_CONFIG_FILE" >> "$_gi"
48
+ log_dim "Added $RNEX_LOCAL_CONFIG_FILE to .gitignore"
49
+ fi
50
+ if ! grep -qF ".rnex.local.yaml" "$_gi" 2>/dev/null; then
51
+ printf '.rnex.local.yaml\n' >> "$_gi"
52
+ fi
54
53
  fi
55
54
 
56
55
  # Universal search tool ignore file (ripgrep, Claude Code, VS Code, Zed)
@@ -55,10 +55,8 @@ complete -F _rnex_completions repo-nexus
55
55
  # Prompt hook for zero-fork auto-synchronization
56
56
  _rnex_auto_sync() {
57
57
  [ -f rnex.yaml ] || return 0
58
- _stamp=""
59
- [ -f .rnex/sync_stamp ] && _stamp=".rnex/sync_stamp"
60
- [ -z "$_stamp" ] && [ -f .rnex/.sync_stamp ] && _stamp=".rnex/.sync_stamp"
61
- if [ -z "$_stamp" ] || [ rnex.yaml -nt "$_stamp" ] || \
58
+ _stamp=".rnex/sync_stamp"
59
+ if [ ! -f "$_stamp" ] || [ rnex.yaml -nt "$_stamp" ] || \
62
60
  { [ -f .local.rnex.yaml ] && [ .local.rnex.yaml -nt "$_stamp" ]; }; then
63
61
  rnex sync -y --quiet
64
62
  fi
@@ -146,10 +144,8 @@ _rnex "$@"
146
144
  # Prompt hook for zero-fork auto-synchronization
147
145
  _rnex_auto_sync() {
148
146
  [ -f rnex.yaml ] || return 0
149
- _stamp=""
150
- [ -f .rnex/sync_stamp ] && _stamp=".rnex/sync_stamp"
151
- [ -z "$_stamp" ] && [ -f .rnex/.sync_stamp ] && _stamp=".rnex/.sync_stamp"
152
- if [ -z "$_stamp" ] || [ rnex.yaml -nt "$_stamp" ] || \
147
+ _stamp=".rnex/sync_stamp"
148
+ if [ ! -f "$_stamp" ] || [ rnex.yaml -nt "$_stamp" ] || \
153
149
  { [ -f .local.rnex.yaml ] && [ .local.rnex.yaml -nt "$_stamp" ]; }; then
154
150
  rnex sync -y --quiet
155
151
  fi
@@ -185,13 +181,8 @@ complete -c rnex -n "__fish_use_subcommand" -a version -d "Show version"
185
181
 
186
182
  function _rnex_auto_sync --on-event fish_prompt
187
183
  test -f rnex.yaml; or return 0
188
- set -l _stamp ""
189
- if test -f .rnex/sync_stamp
190
- set _stamp .rnex/sync_stamp
191
- else if test -f .rnex/.sync_stamp
192
- set _stamp .rnex/.sync_stamp
193
- end
194
- if test -z "$_stamp"; or test rnex.yaml -nt "$_stamp"; or test -f .local.rnex.yaml -a .local.rnex.yaml -nt "$_stamp"
184
+ set -l _stamp .rnex/sync_stamp
185
+ if not test -f "$_stamp"; or test rnex.yaml -nt "$_stamp"; or test -f .local.rnex.yaml -a .local.rnex.yaml -nt "$_stamp"
195
186
  rnex sync -y --quiet
196
187
  end
197
188
  end
@@ -68,7 +68,6 @@ cmd_status() {
68
68
  fi
69
69
 
70
70
  _stamp_file="$NEXUS_DIR/.rnex/sync_stamp"
71
- [ -f "$_stamp_file" ] || _stamp_file="$NEXUS_DIR/.rnex/.sync_stamp"
72
71
  _cur_sum="$(get_config_sum "$NEXUS_DIR")"
73
72
  if [ ! -f "$_stamp_file" ] || [ "$_cur_sum" != "$(cat "$_stamp_file" 2>/dev/null)" ]; then
74
73
  printf ' %b!%b Sync Stamp: workspace out of sync with configuration (run "rnex sync")\n' "$_Y" "$_NC"
@@ -16,7 +16,6 @@ _ws="$(cd "$(dirname "$0")/../.." 2>/dev/null && pwd -P)"
16
16
  [ -f "$_ws/rnex.yaml" ] || exit 0
17
17
 
18
18
  _stamp="$_ws/.rnex/sync_stamp"
19
- [ -f "$_stamp" ] || _stamp="$_ws/.rnex/.sync_stamp"
20
19
  _cur_sum="$(cd "$_ws" 2>/dev/null && cksum rnex.yaml .local.rnex.yaml 2>/dev/null | cksum | awk '{print $1, $2}')"
21
20
  _saved_sum=""
22
21
  [ -f "$_stamp" ] && _saved_sum="$(cat "$_stamp" 2>/dev/null)"
@@ -5,17 +5,45 @@
5
5
  # ============================================================================
6
6
 
7
7
  cmd_install() {
8
- _target_bin="${1:-$HOME/.local/bin}"
8
+ _target_bin="${1:-${RNEX_BIN_DIR:-$HOME/.local/bin}}"
9
9
  _target_bin="$(resolve_path "$_target_bin")"
10
10
  mkdir -p "$_target_bin"
11
11
 
12
- _source_cli="$SCRIPT_LOCATION/rnex"
13
- [ -f "$_source_cli" ] || _source_cli="$SCRIPT_LOCATION"
12
+ _src_root="$SCRIPT_LOCATION"
13
+ [ -f "$_src_root/rnex" ] || _src_root="$(dirname "$SCRIPT_LOCATION")"
14
+ _source_cli="$_src_root/rnex"
14
15
  [ -f "$_source_cli" ] || die "Could not locate source CLI executable to install"
15
16
 
16
- chmod +x "$_source_cli"
17
- ln -sf "$_source_cli" "$_target_bin/rnex"
18
- ln -sf "$_source_cli" "$_target_bin/repo-nexus"
17
+ if [ -n "${RNEX_INSTALL_DIR:-}" ]; then
18
+ _install_dir="$(resolve_path "$RNEX_INSTALL_DIR")"
19
+ elif [ -n "${1:-}" ]; then
20
+ case "$(basename "$_target_bin")" in
21
+ bin) _install_dir="$(dirname "$_target_bin")/share/repo-nexus" ;;
22
+ *) _install_dir="$_target_bin" ;;
23
+ esac
24
+ else
25
+ _install_dir="$HOME/.local/share/repo-nexus"
26
+ fi
27
+
28
+ mkdir -p "$_install_dir"
29
+ if [ "$_src_root" != "$_install_dir" ]; then
30
+ rm -rf "$_install_dir/docs"
31
+ cp "$_source_cli" "$_install_dir/rnex"
32
+ [ -f "$_src_root/package.json" ] && cp "$_src_root/package.json" "$_install_dir/package.json"
33
+ for _asset in lib templates toolkit; do
34
+ if [ -d "$_src_root/$_asset" ]; then
35
+ rm -rf "${_install_dir:?}/$_asset"
36
+ cp -R "$_src_root/$_asset" "$_install_dir/$_asset"
37
+ fi
38
+ done
39
+ fi
40
+
41
+ _installed_cli="$_install_dir/rnex"
42
+ chmod +x "$_installed_cli"
43
+ if [ "$_target_bin" != "$_install_dir" ]; then
44
+ ln -sf "$_installed_cli" "$_target_bin/rnex"
45
+ fi
46
+ ln -sf "$_installed_cli" "$_target_bin/repo-nexus"
19
47
 
20
48
  log_ok "Installed 'rnex' and 'repo-nexus' into $_target_bin"
21
49
  case ":$PATH:" in
package/lib/hooks.sh CHANGED
@@ -252,14 +252,8 @@ _sync_if_hook_config_changed() {
252
252
  _shc_hook="$1"
253
253
  shift || true
254
254
  _cfg_changed=0
255
- _stamp_file=""
256
- if [ -f "$NEXUS_DIR/.rnex/sync_stamp" ]; then
257
- _stamp_file="$NEXUS_DIR/.rnex/sync_stamp"
258
- elif [ -f "$NEXUS_DIR/.rnex/.sync_stamp" ]; then
259
- _stamp_file="$NEXUS_DIR/.rnex/.sync_stamp"
260
- fi
261
-
262
- if [ -z "$_stamp_file" ] || [ "$(get_config_sum "$NEXUS_DIR")" != "$(cat "$_stamp_file" 2>/dev/null)" ]; then
255
+ _stamp_file="$NEXUS_DIR/.rnex/sync_stamp"
256
+ if [ ! -f "$_stamp_file" ] || [ "$(get_config_sum "$NEXUS_DIR")" != "$(cat "$_stamp_file" 2>/dev/null)" ]; then
263
257
  _cfg_changed=1
264
258
  else
265
259
  case "$_shc_hook" in
package/lib/workspace.sh CHANGED
@@ -42,10 +42,11 @@ update_sync_stamp() {
42
42
  _dir="${1:-${NEXUS_DIR:-.}}"
43
43
  mkdir -p "$_dir/.rnex"
44
44
  if [ ! -f "$_dir/.rnex/.gitignore" ]; then
45
- printf ".sync_stamp\nsync_stamp\n" > "$_dir/.rnex/.gitignore"
45
+ printf "sync_stamp\n" > "$_dir/.rnex/.gitignore"
46
46
  else
47
- if ! grep -q "^\.sync_stamp" "$_dir/.rnex/.gitignore" 2>/dev/null; then
48
- printf ".sync_stamp\n" >> "$_dir/.rnex/.gitignore"
47
+ if grep -q "^\.sync_stamp" "$_dir/.rnex/.gitignore" 2>/dev/null; then
48
+ _tmp_gi="$(mktemp)"
49
+ grep -v "^\.sync_stamp" "$_dir/.rnex/.gitignore" > "$_tmp_gi" && mv "$_tmp_gi" "$_dir/.rnex/.gitignore"
49
50
  fi
50
51
  if ! grep -q "^sync_stamp" "$_dir/.rnex/.gitignore" 2>/dev/null; then
51
52
  printf "sync_stamp\n" >> "$_dir/.rnex/.gitignore"
@@ -77,7 +78,6 @@ check_auto_sync() {
77
78
  fi
78
79
  [ -f "$_cfg_file" ] || return 0
79
80
  _stamp="$_ws/.rnex/sync_stamp"
80
- [ -f "$_stamp" ] || _stamp="$_ws/.rnex/.sync_stamp"
81
81
  if [ ! -f "$_stamp" ] || [ "$(get_config_sum "$_ws")" != "$(cat "$_stamp" 2>/dev/null)" ]; then
82
82
  cmd_sync -y --quiet
83
83
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repo-nexus",
3
- "version": "0.7.35",
3
+ "version": "0.7.38",
4
4
  "description": "Lightweight, zero-dependency Virtual Meta-Repo companion for multi-repo workspaces and shared AI context (no git submodules)",
5
5
  "bin": {
6
6
  "repo-nexus": "rnex",
@@ -16,13 +16,8 @@
16
16
  "files": [
17
17
  "rnex",
18
18
  "lib/",
19
- "README.md",
20
- "CHANGELOG.md",
21
- "LICENSE",
22
- "docs/",
23
- "!docs/.vitepress/",
24
- "toolkit/",
25
- "templates/"
19
+ "templates/",
20
+ "toolkit/"
26
21
  ],
27
22
  "repository": {
28
23
  "type": "git",
@@ -55,6 +50,10 @@
55
50
  "linux"
56
51
  ],
57
52
  "devDependencies": {
58
- "vitepress": "^1.6.0"
53
+ "vitepress": "^1.6.4"
54
+ },
55
+ "overrides": {
56
+ "esbuild": "^0.25.0",
57
+ "vite": "^6.4.4"
59
58
  }
60
59
  }
package/CHANGELOG.md DELETED
@@ -1,363 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to Repo Nexus (`rnex`) will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.7.26] - 2026-10-21
9
-
10
- ### Added
11
- - **Multi-Source Intake Configuration for Karpathy LLM Wiki (`sources`)**:
12
- - Replaced single `raw_dir` scalar configuration with multi-value `sources` list under `plugins.karpathy-llm.sources`.
13
- - Added pure POSIX `/bin/sh` glob and directory resolver (`resolve_plugin_sources`) supporting both explicit directory paths (e.g. `docs`) and recursive/single-level glob patterns (e.g. `"repos/**/README.md"`, `repos/*/README.md`).
14
- - Implemented automatic exclusion of member repositories disabled locally or globally (`enabled: false`) from resolved intake paths.
15
- - Enforced two-level configuration precedence: `.local.rnex.yaml` takes full precedence over `rnex.yaml` when defining `sources`.
16
- - Added automatic directory pruning for `.git`, `.rnex`, and `node_modules` during recursive file traversal.
17
- - Added safe directory provisioning in `rnex sync` that creates explicit directory sources (such as `docs`) while skipping wildcard patterns and file targets.
18
-
19
- ### Changed
20
- - **Default Intake Sources**:
21
- - Default sources for `karpathy-llm` plugin are now `docs` and `"repos/**/README.md"`.
22
- - Updated `rnex init` templates, `rnex status`, and plugin scaffolding to render and configure multi-line `sources`.
23
- - Updated plugin lifecycle hooks (`after_sync.sh`, `git_*.sh`) and agentic skills (`wiki-ingest.md`, `wiki-lint.md`) to resolve documentation from `sources`.
24
-
25
- ### Deprecated
26
- - **Legacy `raw_dir` Configuration**:
27
- - `plugins.karpathy-llm.raw_dir` is deprecated in favor of `sources`. Workspaces configuring `raw_dir` are automatically read via transparent fallback with a non-fatal deprecation notice advising migration to `sources`.
28
-
29
- ## [0.7.7] - 2026-10-15
30
-
31
- ### Added
32
- - **Native `SKILL.md` Bundle Support for User Skills**:
33
- - Upgraded User Skill generator (`rnex_register_user_skill`) to emit dual formats tailored to each AI provider's discovery engine:
34
- - **Skill-Based Providers (`.github/skills/`, `.claude/skills/`, `.gemini/skills/`)**: Generates native `rnex-<name>/SKILL.md` directory bundles containing YAML frontmatter (`name: rnex-<name>`, `description: "..."`) for automatic discoverability in VS Code, Copilot Chat, Antigravity, and Claude Code skill-pickers.
35
- - **Rule-Based Providers (`.cursor/rules/`, `.windsurf/rules/`)**: Generates flat `rnex-<name>.md` pointer files aligning with Cursor and Windsurf rule conventions.
36
- - Automatically extracts skill descriptions from target markdown headers to populate YAML frontmatter cleanly.
37
- - **GitHub Copilot Integration Plugin (`copilot`)**:
38
- - Restored `copilot` as a first-class AI provider plugin in `toolkit/plugins/copilot/`.
39
- - Supports `instructions: true` (managing `.github/copilot-instructions.md` within non-destructive delimiters) and `skills: true` (generating native User Skill bundles in `.github/skills/`).
40
- - Added CLI flags `--copilot` and `--no-copilot` to `rnex init`.
41
-
42
- ## [0.7.5] - 2026-10-15
43
-
44
- ### Added
45
- - **Strict Separation of Core `rnex` Skills and Plugin Skills**:
46
- - Core agentic skills live exclusively in `toolkit/skills/*.md` and sync strictly to `.rnex/skills/*.md` (`clone-sync.md`, `batch-exec.md`, `workspace-status.md`).
47
- - Plugin-owned skills live strictly inside `toolkit/plugins/<plugin>/skills/*.md` and sync strictly to `.rnex/plugins/<plugin>/skills/*.md` (e.g. `wiki-ingest.md`, `wiki-lint.md`).
48
- - Strict isolation guarantee: plugin skills are never placed in `.rnex/skills/`, and core skills are never placed in plugin directories.
49
- - **On-the-Fly Zero-Logic User Skill Generator**:
50
- - Generates lightweight User Skill pointers prefixed with `rnex-` (`rnex-<name>.md`) into active AI provider directories (`.cursor/rules/`, `.claude/skills/`, `.gemini/skills/`, `.windsurf/rules/`).
51
- - Contains zero inline operational heuristics—only a strict reference link directing AI assistants to the agentic protocol in `.rnex/`.
52
- - **Plugin Contract Helper API**:
53
- - Added `rnex_register_user_skill <name> <path>` and `rnex_unregister_user_skill <name>` POSIX helper functions exported in `.rnex/bin/rnex-env.sh` and sourced in hook subshells.
54
- - Dynamically evaluates `RNEX_PROVIDER_SKILL_DIRS` based on enabled AI provider plugins (`skills: true`).
55
- - **Provider Plugin Configuration (`skills: true`)**:
56
- - Added native `skills: true` configuration support across `claude`, `gemini`, `cursor`, and `windsurf` plugins.
57
- - **Plugin Lifecycle Hooks Contract**:
58
- - Added `before_<cmd>` and `after_<cmd>` hook execution across all mutating commands while bypassing read-only commands (`status`, `list`, `completion`).
59
- - Added `before_plugin_disable` hook dispatched by `rnex plugin disable <name>` and plugin pruning in `rnex sync` to unregister plugin-owned User Skills.
60
- - **Compiled AI Instructions (`.rnex/ai-instructions.md`)**:
61
- - `rnex sync` compiles a unified instruction file inside `.rnex/` from merged 2-level config, base template, and active plugin instruction fragments.
62
- - **Event-Driven Auto-Sync**:
63
- - Checksum-based config drift detection (`.rnex/.sync_stamp`) that runs `rnex sync --quiet` automatically on any mutating command, `rnex list`, shell prompt hooks (`_rnex_auto_sync`), AI session startup (`SessionStart` hook), and Git hooks (`post-merge`, `post-checkout`, `pre-commit`).
64
- - **Modular Test Suite Architecture**:
65
- - Decomposed 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`.
66
-
67
- ### Changed
68
- - **Provider Plugin Options**: Deprecated and replaced legacy `prompts: true` and `workflows: true` options with `instructions: true` and `skills: true`.
69
- - **Root AI Provider Directives**: Standardized `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, and `.windsurfrules` to route AI assistants cleanly to `.rnex/ai-instructions.md`.
70
- - **Karpathy LLM Wiki Architecture**:
71
- - Moved workflows to plugin agentic skills under `toolkit/plugins/karpathy-llm/skills/`.
72
- - Added dynamic navigation index fallback: generated repository pages (`repo-<name>.md`) reference `index.md` when specialized navigation pages are absent.
73
- - Added hot cache word count ceiling: automatically bounds `.rnex/wiki/hot.md` to $\le 480$ words and collapses catalog links when workspace metadata expands across $>10$ repositories.
74
-
75
- ### Fixed
76
- - **Custom Copilot Instructions Preservation**: Fixed non-destructive cleanup in `lib/ai.sh` to strictly preserve custom developer guidelines authored in `.github/copilot-instructions.md` outside `REPO-NEXUS` delimiters.
77
- - **Documentation & Manifest Consistency**: Purged obsolete `prompts` and `workflows` references across plugin manifests (`plugin.yaml`), READMEs, CLI docs, configuration guides, and `lib/yaml.sh`.
78
-
79
- ### Removed
80
- - **Legacy Prompts & Workflows**: Completely purged `toolkit/prompts/`, `toolkit/workflows/`, and obsolete `.rnex/prompts/` and `.rnex/workflows/` runtime directories.
81
- - **Copilot Local Prompt Harness**: Removed `toolkit/plugins/copilot/`, `--copilot` flag, and prompt-mirroring harness in favor of universal `AGENTS.md` and native Copilot instruction reading.
82
- - **`rnex fix` and `rnex status --fix`**: Permanently removed in favor of `rnex sync` as the single idempotent reconciliation command.
83
-
84
-
85
- ## [0.6.7] - 2026-10-12
86
-
87
- ### Documentation
88
- - Updated project logo image.
89
-
90
- ## [0.6.6] - 2026-10-12
91
-
92
- ### Changed
93
- - Streamlined `README.md` and `package.json` keywords for better documentation layout.
94
-
95
- ## [0.6.5] - 2026-10-12
96
-
97
- ### Added
98
- - **Dynamic AI Instructions & Complete Plugin Deactivation in `rnex fix`**:
99
- - `get_rnex_instructions()` dynamically evaluates whether `karpathy-llm` is enabled. When disabled or omitted from configuration, the Karpathy LLM Wiki mandatory gate alert, wiki orientation startup step, forbidden wiki actions, and wiki subagent references are omitted from `AGENTS.md` and native provider instructions.
100
- - `sync_plugins` automatically prunes scoped directories (`.rnex/plugins/<plugin>/`) from both the workspace root and member repositories whenever a plugin is marked `enabled: false` or omitted from config.
101
- - Provider prompt mirrors across all supported assistants (`.github/prompts`, `.claude/commands`, `.gemini/prompts`, `.cursor/prompts`, `.windsurf/prompts`) are cleaned of prompts and workflows belonging to disabled plugins, while preserving base prompts and active plugin prompts.
102
- - Hook dispatchers and `status` reports evaluate active enablement (`yaml_plugin_enabled`) rather than key presence, preventing disabled plugins from registering hook alerts or status indicators.
103
- - User-authored content in wiki and intake directories is strictly preserved during plugin deactivation.
104
-
105
- ## [0.6.4] - 2026-10-12
106
-
107
- ### Documentation
108
- - Switched documentation logo and favicon to `logo.png`.
109
-
110
- ## [0.6.3] - 2026-10-12
111
-
112
- ### Documentation
113
- - Updated documentation logo asset to `logo.jpg`.
114
-
115
- ## [0.6.2] - 2026-10-12
116
-
117
- ### Documentation
118
- - Switched branding to PNG logo and refined landing page copy.
119
-
120
- ## [0.6.1] - 2026-10-12
121
-
122
- ### Added
123
- - **Mandatory Wiki Routing Protocol for AI Assistants**:
124
- - Enforced strict sequential startup routing protocol in `AGENTS.md` and provider instructions requiring AI assistants to inspect `.local.rnex.yaml` and `rnex.yaml` first, consult `.rnex/plugins/karpathy-llm/` instructions, check recent context in `wiki/hot.md` and `wiki/index.md`, and access only targeted files.
125
- - Added forbidden startup actions prohibiting blind searches across `repos/` and tree exploration.
126
- - Updated logo asset to JPEG.
127
-
128
- ## [0.6.0] - 2026-10-11
129
-
130
- ### Changed
131
- - Major version bump reflecting the completed Virtual Meta-Repo architecture: modular provider plugin architecture, universal `AGENTS.md` standard, VitePress documentation site, and prompts-only provider mirroring.
132
- - Refined documentation site logo, branding, and tagline.
133
-
134
- ## [0.5.19] - 2026-10-11
135
-
136
- ### Documentation
137
- - Consolidated FAQ and CLI documentation pages and updated project configuration.
138
-
139
- ## [0.5.18] - 2026-10-11
140
-
141
- ### Added
142
- - **Universal `AGENTS.md` & Native Provider Instructions Architecture**:
143
- - Maintained `AGENTS.md` at the workspace root as the universal, cross-tool standard for workspace routing instructions. Assistants that read `AGENTS.md` unconditionally (such as GitHub Copilot) rely directly on `AGENTS.md`, eliminating redundant instruction files (`.github/copilot-instructions.md`) and diverging contexts.
144
- - Assistants with primary native configuration formats (Anthropic Claude Code with `CLAUDE.md`, Google Gemini CLI with `GEMINI.md`, Cursor with `.cursorrules` and `.cursor/rules/`, and Windsurf with `.windsurfrules`) have their instruction files maintained when their respective plugin is enabled (`instructions: true`, default). Since Claude Code only falls back to `AGENTS.md` when no `CLAUDE.md` is present, maintaining `CLAUDE.md` ensures Claude Code never misses Repo Nexus routing instructions when project-specific rules exist.
145
- - **Self-Contained Skills, Workflows, Rules, and Subagents under `.rnex/`**:
146
- - Tools and autonomous agents operate directly on `.rnex/skills/`, `.rnex/workflows/`, `.rnex/rules/`, `.rnex/instructions/`, and active plugin scopes under `.rnex/plugins/<plugin-name>/`.
147
- - Autonomous subagents (e.g. `rnex-wiki-curator.agent.md`) are maintained under `.rnex/agents/` and `.rnex/plugins/<plugin>/agents/` without external mirroring to provider folders.
148
- - **Prompts-Only AI Provider Synchronization**:
149
- - Streamlined provider plugins (`copilot`, `claude`, `gemini`, `cursor`, `windsurf`) to mirror human-facing prompts and active plugin workflows exclusively to native IDE prompt pickers (`.github/prompts/*.prompt.md`, `.claude/commands/*.md`, `.gemini/prompts/*.prompt.md`, `.cursor/prompts/*.md`, `.windsurf/prompts/*.md`).
150
- - Purged internal prompts from `.rnex/prompts/` and plugin directories.
151
- - Simplified provider plugin options: `copilot` uses `prompts: true|false` and `workflows: true|false`; `claude`, `gemini`, `cursor`, and `windsurf` use `instructions: true|false`, `prompts: true|false`, and `workflows: true|false`.
152
- - Surgical cleanup during `rnex fix` purges legacy mirrored skills and agents while preserving user-authored custom files.
153
-
154
- ## [0.5.17] - 2026-10-11
155
-
156
- ### Fixed
157
- - Guarded variable expansion in `rm -rf` calls across POSIX shell scripts (resolving ShellCheck SC2115).
158
-
159
- ## [0.5.16] - 2026-10-11
160
-
161
- ### Added
162
- - **Configurable Karpathy LLM Wiki Directories**:
163
- - Made wiki destination paths fully configurable via `plugins.karpathy-llm.wiki_dir` (default: `wiki`) and `plugins.karpathy-llm.raw_dir` (default: `raw`) in `rnex.yaml` and `.local.rnex.yaml`.
164
- - Workflows, templates, and Git hooks dynamically resolve configured paths.
165
- - **Standardized `rnex-` Asset Naming**:
166
- - Standardized all workspace prompts, workflows, skills, and agents to consistently start with `rnex-` prefix.
167
-
168
- ## [0.5.15] - 2026-10-11
169
-
170
- ### Changed
171
- - Updated author username and organization references from nu-nenoi to unoxen.
172
-
173
- ## [0.5.14] - 2026-10-11
174
-
175
- ### Added
176
- - Comprehensive documentation site built with VitePress.
177
- - Updated AI prompt synchronization logic and documentation recipes.
178
-
179
- ## [0.5.13] - 2026-10-10
180
-
181
- ### Documentation
182
- - Fixed relative links across plugin guides and removed FAQ badge.
183
-
184
- ## [0.5.12] - 2026-10-10
185
-
186
- ### Added
187
- - **Dedicated Plugins Documentation (`docs/plugins/`)**:
188
- - Comprehensive documentation suite covering all built-in AI provider and domain plugins, architecture, and developer authoring guides.
189
- - Added `docs/plugins/README.md` detailing scoped plugin isolation, member repo synchronization, decoupled cross-plugin asset discovery, two-level configuration, delimited instruction merging, CLI command reference, and custom plugin authoring specifications.
190
- - Added dedicated documentation pages: `copilot.md`, `claude.md`, `gemini.md`, `cursor.md`, `windsurf.md`, and `karpathy-llm.md`.
191
-
192
- ## [0.5.10] - 2026-10-10
193
-
194
- ### Changed
195
- - Removed redundant `CLAUDE.md` in favor of standard `AGENTS.md`.
196
-
197
- ## [0.5.9] - 2026-10-10
198
-
199
- ### Changed
200
- - **Modular POSIX Shell Codebase Architecture (`lib/`)**:
201
- - Decomposed the monolithic 3,700+ line `rnex` script into an extensible, modular architecture with dedicated libraries and command modules under `lib/`.
202
- - Streamlined `rnex` launcher to 110 lines focused on symlink-aware script path resolution (`RNEX_LIB_DIR`), core library discovery, and CLI dispatch.
203
- - Extracted core utilities and workspace operations into specialized modules: `lib/core.sh`, `lib/workspace.sh`, `lib/yaml.sh`, `lib/repos.sh`, `lib/plugins.sh`, `lib/ai.sh`, `lib/hooks.sh`.
204
- - Extracted CLI commands into dedicated modules under `lib/commands/`: `init.sh`, `repo.sh`, `status.sh`, `fix.sh`, `plugin.sh`, `completion.sh`, `system.sh`.
205
- - Maintained 100% backward compatibility, pure POSIX `/bin/sh` compliance, and zero external runtime dependencies.
206
-
207
- ## [0.5.8] - 2026-10-10
208
-
209
- ### Added
210
- - Unified agent mirroring and cross-provider configuration.
211
-
212
- ## [0.5.7] - 2026-10-10
213
-
214
- ### Added
215
- - **AI Provider Plugins for Claude, Gemini, Cursor, and Windsurf**:
216
- - Built-in provider plugins (`toolkit/plugins/claude/`, `toolkit/plugins/gemini/`, `toolkit/plugins/cursor/`, `toolkit/plugins/windsurf/`) alongside `copilot`.
217
- - Native instructions synthesis and sync for each provider: `CLAUDE.md`, `GEMINI.md`, `.cursorrules` (and `.cursor/rules/repo-nexus.mdc`), and `.windsurfrules`.
218
- - Standardized prompt mirroring to `.claude/commands/`, `.gemini/prompts/`, `.cursor/prompts/`, and `.windsurf/prompts/`.
219
- - Added `--claude`, `--gemini`, `--cursor`, and `--windsurf` initialization flags to `rnex init`.
220
- - **Unified Single-Process Workspace Reconcile & Upgrade (`rnex fix`)**:
221
- - Merged configuration version updates directly into `rnex fix` as a single, idempotent process.
222
- - `rnex update` and `rnex upgrade` maintained as clean aliases pointing directly to `rnex fix`.
223
-
224
- ### Changed
225
- - Removed legacy `ai_instructions` configuration key in favor of AI provider plugins.
226
-
227
- ## [0.5.6] - 2026-10-09
228
-
229
- ### Added
230
- - **Modular GitHub Copilot Plugin & Extensible Provider Sync (`plugins: copilot: ...`)**:
231
- - Encapsulated GitHub Copilot integration as a built-in Repo Nexus plugin (`copilot`) located in `toolkit/plugins/copilot/`.
232
- - Extensible configuration options per provider under `plugins:` in `rnex.yaml` and `.local.rnex.yaml` (`prompts`, `skills`, `instructions`, `agents`).
233
- - Decoupled cross-plugin asset discovery: `copilot` provider inspects all active plugins (e.g. `karpathy-llm`) and mirrors their prompts, workflows, skills, agents, and guidelines without introducing plugin dependencies.
234
- - CLI management via `rnex plugin enable [--local] copilot`, `rnex plugin disable [--local] copilot`, and `rnex plugin info copilot`.
235
- - Added `--copilot` initialization flag to `rnex init`.
236
-
237
- ### Fixed
238
- - Surgical non-destructive cleanup of skills, agents, and prompts during provider deactivation or reconciliation.
239
-
240
- ## [0.5.5] - 2026-10-09
241
-
242
- ### Changed
243
- - **Track Workspace `.rnex/` in Version Control**:
244
- - Removed `.rnex/` from `.gitignore` templates and generation.
245
- - `reconcile_gitignore` and `rnex fix` actively strip legacy `.rnex/` ignore rules from `.gitignore` so that team prompts, plugins, and hooks are tracked in git.
246
- - Updated `rnex status` to expect `.rnex/` to remain tracked by git.
247
-
248
- ### Fixed
249
- - Resolved hook self-rewrite bug where `rnex hooks run post-merge` invoked `cmd_fix`, which truncated and replaced `.rnex/hooks/post-merge` while actively executing it.
250
-
251
- ## [0.5.4] - 2026-10-09
252
-
253
- ### Fixed
254
- - **Git Hooks Self-Rewrite Prevention & Wrapper Preservation**:
255
- - Added in-hook execution guard (`_RNEX_INSIDE_HOOK=1`) preventing hook script regeneration during active hook dispatch.
256
- - Preserved custom / repository-owned wrappers in `.rnex/hooks/` that are not auto-managed by `rnex`.
257
- - Added `cmp -s` check before writing hook files to eliminate unnecessary file churn and in-place overwrites.
258
- - Automatically chain to existing repository-owned `.githooks/` scripts if present.
259
-
260
- ## [0.5.3] - 2026-10-09
261
-
262
- ### Added
263
- - **Explicit `git_hooks` Workspace Configuration (`rnex.yaml` & `.local.rnex.yaml`)**:
264
- - Top-level `git_hooks: true|false` setting establishes the workspace configuration as the single source of truth for automated Git hooks.
265
- - Two-level configuration support allowing per-workstation overrides in `.local.rnex.yaml`.
266
- - `rnex hooks install [--local]` and `rnex hooks uninstall [--local]` record preference directly to `rnex.yaml` or `.local.rnex.yaml`.
267
- - `rnex fix` (and `rnex sync`) automatically reconciles Git's `core.hooksPath` against the resolved `git_hooks` configuration.
268
- - Interactive `rnex init` determines and records `git_hooks` preference upfront in new workspaces.
269
-
270
- ## [0.5.2] - 2026-10-08
271
-
272
- ### Fixed
273
- - Dynamic version matching in test suite (`tests/test_cli.sh`) resolving hardcoded version assertion on `package.json` bumps.
274
-
275
- ## [0.5.1] - 2026-10-08
276
-
277
- ### Added
278
- - Comprehensive CLI Reference Manual (`docs/CLI.md`) documenting all workspace lifecycle commands, member repository operations, automated Git hooks, scoped plugins, standardized prompts catalog, and shell completion recipes.
279
-
280
- ### Fixed
281
- - Dynamic version matching in test suite (`tests/test_cli.sh`, Test 26) resolving hardcoded version assertion on `package.json` bumps.
282
- - Default version fallback in `rnex` CLI aligned with `package.json`.
283
-
284
- ## [0.5.0] - 2026-10-08
285
-
286
- ### Added
287
- - **Version-Aware Upgrade System (`rnex update` / `rnex upgrade` and `rnex fix`)**:
288
- - Automatically compares workspace configuration against the running CLI version using semantic versioning.
289
- - Interactive upgrade prompt (`[y/N]`, bypassable with `-y` or `--yes`).
290
- - Non-destructively inserts missing schema keys (`version`, `ai_instructions`, `code_workspace`) while preserving comments and repo mappings.
291
- - Updates routing instructions in `AGENTS.md`, `CLAUDE.md`, and other detected AI assistant instruction files.
292
- - **Config-Driven Automated Git Hooks (`rnex hooks`)**:
293
- - Native Git hooks managed under `.rnex/hooks/` via `git config core.hooksPath .rnex/hooks`.
294
- - Dynamic dispatchers for `post-merge`, `post-commit`, `pre-commit`, and `pre-push` that evaluate workspace triggers defined in `rnex.yaml` and `.local.rnex.yaml`.
295
- - Automated `post-merge` hook runs `rnex fix -y --quiet` to keep member clones and plugin scopes in sync after pulling team changes.
296
- - Subcommands: `rnex hooks install`, `rnex hooks uninstall`, and `rnex hooks status`.
297
- - Interactive hooks setup prompt during `rnex init` (controllable via `--hooks` and `--no-hooks` flags).
298
- - Health check integrated into `rnex status` reporting active hooks and triggers.
299
- - **Standardized Prompts Suite & Master Catalog (`toolkit/prompts/`)**:
300
- - Master index catalog at `toolkit/prompts/index.md` (synced to `.rnex/prompts/index.md`).
301
- - New workflow prompts:
302
- - `rnex-cross-repo-feature.md`: Multi-repository feature planning and contract implementation.
303
- - `rnex-workspace-audit.md`: Multi-repo status, branch tracking, and configuration validation.
304
- - `rnex-wiki-ingest.md`: Autonomous intake decomposition into atomic Karpathy LLM Wiki pages.
305
- - `rnex-wiki-lint.md`: Graph integrity validation, backlink recalculation, and index rebuilding.
306
- - `rnex-setup-karpathy-wiki.md`: Deterministic knowledge base scaffolding.
307
- - Workspace `AGENTS.md` and `CLAUDE.md` maintain a minimal 1-line pointer to `.rnex/prompts/index.md` to conserve agent context.
308
- - **Mandatory Session Startup Protocol**:
309
- - Enforced hard-gate instruction block in `AGENTS.md` and `CLAUDE.md` requiring AI coding assistants to inspect configuration (`.local.rnex.yaml`, `rnex.yaml`), plugin guidelines, and orientation notes (`wiki/hot.md` and `wiki/index.md`) before taking task actions.
310
-
311
- ## [0.4.7] - 2026-10-06
312
-
313
- ### Fixed
314
- - Quoted variable expansion in parameter pattern removal (`_repos_rel="${REPOS_DIR#"$NEXUS_DIR"/}"`) resolving ShellCheck SC2295.
315
-
316
- ## [0.4.6] - 2026-10-06
317
-
318
- ### Added
319
- - **Configurable AI Instructions Routing** (`ai_instructions` in `rnex.yaml`):
320
- - Support custom instruction files (e.g. `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, defaulting to `AGENTS.md`).
321
- - `rnex status` detects and highlights missing instruction files.
322
- - `rnex init` supports `--ai <file>` flag.
323
- - **VS Code & Cursor Multi-Root Workspace Support** (`code_workspace` in `rnex.yaml`):
324
- - Automatically generates and synchronizes `.code-workspace` files mapping the workspace root and active member repositories.
325
- - `rnex init` supports `--code-workspace [file]` flag.
326
-
327
- ## [0.4.5] - 2026-10-06
328
-
329
- ### Fixed
330
- - Guaranteed deterministic workspace initialization by tracking `repos/.gitkeep`.
331
- - Prevented empty member directory creation during init.
332
-
333
- ## [0.4.4] - 2026-10-06
334
-
335
- ### Documentation
336
- - Standardized deterministic Karpathy LLM Wiki initialization in `toolkit/plugins/karpathy-llm/`.
337
-
338
- ## [0.4.3] - 2026-10-05
339
-
340
- ### Refactored
341
- - Separated behavioral rules (`rules/behavioral.md`) from architectural specifications (`instructions/wiki-architecture.md`) in `karpathy-llm` plugin.
342
-
343
- ## [0.4.2] - 2026-10-05
344
-
345
- ### Fixed
346
- - Updated automated CLI test suite to dynamically inspect version from `package.json`.
347
-
348
- ## [0.4.1] - 2026-10-05
349
-
350
- ### Added
351
- - Streamlined delimited routing protocol in `AGENTS.md` (`<!-- REPO-NEXUS:START -->` / `<!-- REPO-NEXUS:END -->`).
352
- - Automated `.gitignore` reconciliation stripping legacy counters and ensuring `.rnex/` encapsulation.
353
- - Purged legacy symlink mechanics in favor of physical autonomy.
354
-
355
- ## [0.4.0] - 2026-10-05
356
-
357
- ### Added
358
- - **Virtual Meta-Repo 2.0**:
359
- - Physical member repository clones in `./repos/<name>` with complete Git isolation (no submodules).
360
- - Two-level configuration (`rnex.yaml` team manifest and `.local.rnex.yaml` machine overrides).
361
- - Cross-repository batch execution (`rnex exec <command...>`).
362
- - Member repository state management (`rnex enable`, `rnex disable`, `rnex list`, `rnex remove`).
363
- - Scoped workspace plugins (`.rnex/plugins/<plugin-name>/`).
package/docs/.gitkeep DELETED
File without changes