repo-nexus 0.7.4 → 0.7.6
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.
- package/CHANGELOG.md +35 -27
- package/docs/CLI.md +1 -1
- package/docs/cli/index.md +1 -1
- package/docs/cli/repos.md +1 -1
- package/docs/cli/tooling.md +1 -1
- package/docs/cli/workspace.md +1 -1
- package/docs/examples/monorepo-coexistence.md +2 -2
- package/docs/examples/multi-repo-workspace.md +3 -2
- package/docs/guide/architecture.md +5 -5
- package/docs/guide/configuration.md +2 -4
- package/docs/guide/getting-started.md +1 -1
- package/docs/guide/why-repo-nexus.md +1 -1
- package/docs/index.md +1 -1
- package/docs/plugins/index.md +6 -7
- package/docs/public/dark_logo.svg +15 -0
- package/lib/ai.sh +3 -3
- package/lib/commands/completion.sh +2 -2
- package/lib/yaml.sh +2 -18
- package/package.json +1 -1
- package/toolkit/plugins/claude/README.md +3 -5
- package/toolkit/plugins/claude/instructions/rnex-claude-integration.md +3 -4
- package/toolkit/plugins/claude/plugin.yaml +1 -1
- package/toolkit/plugins/cursor/README.md +3 -5
- package/toolkit/plugins/cursor/instructions/rnex-cursor-integration.md +3 -4
- package/toolkit/plugins/cursor/plugin.yaml +1 -1
- package/toolkit/plugins/gemini/README.md +3 -5
- package/toolkit/plugins/gemini/instructions/rnex-gemini-integration.md +3 -4
- package/toolkit/plugins/gemini/plugin.yaml +1 -1
- package/toolkit/plugins/karpathy-llm/hooks/after_sync.sh +56 -4
- package/toolkit/plugins/windsurf/README.md +3 -5
- package/toolkit/plugins/windsurf/instructions/rnex-windsurf-integration.md +3 -4
- package/toolkit/plugins/windsurf/plugin.yaml +1 -1
- /package/docs/public/{logo.svg → light_logo.svg} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,39 +5,47 @@ All notable changes to Repo Nexus (`rnex`) will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.7.5] - 2026-10-15
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
|
-
- **
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
- **
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- **
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- **
|
|
27
|
-
-
|
|
28
|
-
- **Event-Driven Auto-Sync**:
|
|
29
|
-
-
|
|
30
|
-
- **Modular Test Suite Architecture**:
|
|
31
|
-
-
|
|
11
|
+
- **Strict Separation of Core `rnex` Skills and Plugin Skills**:
|
|
12
|
+
- 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`).
|
|
13
|
+
- 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`).
|
|
14
|
+
- Strict isolation guarantee: plugin skills are never placed in `.rnex/skills/`, and core skills are never placed in plugin directories.
|
|
15
|
+
- **On-the-Fly Zero-Logic User Skill Generator**:
|
|
16
|
+
- Generates lightweight User Skill pointers prefixed with `rnex-` (`rnex-<name>.md`) into active AI provider directories (`.cursor/rules/`, `.claude/skills/`, `.gemini/skills/`, `.windsurf/rules/`).
|
|
17
|
+
- Contains zero inline operational heuristics—only a strict reference link directing AI assistants to the agentic protocol in `.rnex/`.
|
|
18
|
+
- **Plugin Contract Helper API**:
|
|
19
|
+
- 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.
|
|
20
|
+
- Dynamically evaluates `RNEX_PROVIDER_SKILL_DIRS` based on enabled AI provider plugins (`skills: true`).
|
|
21
|
+
- **Provider Plugin Configuration (`skills: true`)**:
|
|
22
|
+
- Added native `skills: true` configuration support across `claude`, `gemini`, `cursor`, and `windsurf` plugins.
|
|
23
|
+
- **Plugin Lifecycle Hooks Contract**:
|
|
24
|
+
- Added `before_<cmd>` and `after_<cmd>` hook execution across all mutating commands while bypassing read-only commands (`status`, `list`, `completion`).
|
|
25
|
+
- Added `before_plugin_disable` hook dispatched by `rnex plugin disable <name>` and plugin pruning in `rnex sync` to unregister plugin-owned User Skills.
|
|
26
|
+
- **Compiled AI Instructions (`.rnex/ai-instructions.md`)**:
|
|
27
|
+
- `rnex sync` compiles a unified instruction file inside `.rnex/` from merged 2-level config, base template, and active plugin instruction fragments.
|
|
28
|
+
- **Event-Driven Auto-Sync**:
|
|
29
|
+
- 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`).
|
|
30
|
+
- **Modular Test Suite Architecture**:
|
|
31
|
+
- 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`.
|
|
32
32
|
|
|
33
33
|
### Changed
|
|
34
|
-
-
|
|
35
|
-
- **Root AI Provider
|
|
36
|
-
-
|
|
34
|
+
- **Provider Plugin Options**: Deprecated and replaced legacy `prompts: true` and `workflows: true` options with `instructions: true` and `skills: true`.
|
|
35
|
+
- **Root AI Provider Directives**: Standardized `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, and `.windsurfrules` to route AI assistants cleanly to `.rnex/ai-instructions.md`.
|
|
36
|
+
- **Karpathy LLM Wiki Architecture**:
|
|
37
|
+
- Moved workflows to plugin agentic skills under `toolkit/plugins/karpathy-llm/skills/`.
|
|
38
|
+
- Added dynamic navigation index fallback: generated repository pages (`repo-<name>.md`) reference `index.md` when specialized navigation pages are absent.
|
|
39
|
+
- 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.
|
|
37
40
|
|
|
38
41
|
### Fixed
|
|
39
|
-
-
|
|
40
|
-
-
|
|
42
|
+
- **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.
|
|
43
|
+
- **Documentation & Manifest Consistency**: Purged obsolete `prompts` and `workflows` references across plugin manifests (`plugin.yaml`), READMEs, CLI docs, configuration guides, and `lib/yaml.sh`.
|
|
44
|
+
|
|
45
|
+
### Removed
|
|
46
|
+
- **Legacy Prompts & Workflows**: Completely purged `toolkit/prompts/`, `toolkit/workflows/`, and obsolete `.rnex/prompts/` and `.rnex/workflows/` runtime directories.
|
|
47
|
+
- **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.
|
|
48
|
+
- **`rnex fix` and `rnex status --fix`**: Permanently removed in favor of `rnex sync` as the single idempotent reconciliation command.
|
|
41
49
|
|
|
42
50
|
|
|
43
51
|
## [0.6.7] - 2026-10-12
|
package/docs/CLI.md
CHANGED
|
@@ -7,7 +7,7 @@ Lightweight zero-dependency Virtual Meta-Repo companion for multi-repo workspace
|
|
|
7
7
|
| Command | Syntax | Description |
|
|
8
8
|
|:---|:---|:---|
|
|
9
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
|
|
10
|
+
| `sync` | `rnex sync [-y] [--quiet]` | **Single reconciliation command**: syncs skills, `.rnex/` harness, plugins, and compiles `.rnex/ai-instructions.md`. |
|
|
11
11
|
| `status` | `rnex status` | **Strictly read-only**: inspect workspace health, active repos, loaded config, git hooks, sync stamp, and plugins. |
|
|
12
12
|
| `add` | `rnex add <name> <git-url> [--local]` | Register a new member repository and clone into `./repos/<name>`. |
|
|
13
13
|
| `clone` | `rnex clone` | Clone all declared member repositories missing from disk. |
|
package/docs/cli/index.md
CHANGED
|
@@ -12,7 +12,7 @@ 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 sync`](workspace.md#rnex-sync) | Workspace | Single reconciliation command: sync
|
|
15
|
+
| [`rnex sync`](workspace.md#rnex-sync) | Workspace | Single reconciliation command: sync skills, .rnex/ harness, and compile AI instructions. |
|
|
16
16
|
| [`rnex status`](workspace.md#rnex-status) | Workspace | Strictly read-only: inspect workspace health, active repos, loaded config, and plugins. |
|
|
17
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`. |
|
package/docs/cli/repos.md
CHANGED
|
@@ -125,5 +125,5 @@ Toggles member-level context projection inside `repos/<name>/.rnex/`.
|
|
|
125
125
|
rnex rnex-dir <enable|disable> <name>
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
* When enabled, workspace
|
|
128
|
+
* When enabled, workspace skills and plugin context are projected into `repos/<name>/.rnex/` for localized AI assistants.
|
|
129
129
|
* When disabled, the repository root remains completely pristine.
|
package/docs/cli/tooling.md
CHANGED
|
@@ -45,7 +45,7 @@ rnex hooks uninstall [--local]
|
|
|
45
45
|
|
|
46
46
|
## Plugin Management
|
|
47
47
|
|
|
48
|
-
Plugins provide AI routing rules, standardized
|
|
48
|
+
Plugins provide AI routing rules, standardized skills, agent workflows, and shared context protocols.
|
|
49
49
|
|
|
50
50
|
### `rnex plugin list`
|
|
51
51
|
Displays all available plugins distributed with `rnex` and indicates whether they are enabled.
|
package/docs/cli/workspace.md
CHANGED
|
@@ -109,7 +109,7 @@ rnex upgrade [options]
|
|
|
109
109
|
### Relationship with `rnex sync`
|
|
110
110
|
`rnex update` delegates directly to `rnex sync`:
|
|
111
111
|
* **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.
|
|
112
|
-
* **Unified Reconciliation**: Delegates directly to `rnex sync`, ensuring configuration schema upgrades, instruction updates (`AGENTS.md`, `.rnex/ai-instructions.md`),
|
|
112
|
+
* **Unified Reconciliation**: Delegates directly to `rnex sync`, ensuring configuration schema upgrades, instruction updates (`AGENTS.md`, `.rnex/ai-instructions.md`), skills, and plugin reconciliation occur in a single, idempotent pass.
|
|
113
113
|
* **Non-Destructive Migration**: Upgrades schema keys while preserving comments, indentation, and custom configurations.
|
|
114
114
|
|
|
115
115
|
---
|
|
@@ -22,7 +22,7 @@ my-workspace/
|
|
|
22
22
|
├── .rnex/ # Workspace orchestration directory (tracked)
|
|
23
23
|
│ ├── hooks/ # Core workspace Git hooks (e.g. post-merge auto-sync)
|
|
24
24
|
│ ├── plugins/ # Enabled plugin instructions, skills, and agents
|
|
25
|
-
│ └──
|
|
25
|
+
│ └── skills/ # Core workspace agentic skills (clone-sync, batch-exec, etc.)
|
|
26
26
|
│
|
|
27
27
|
├── repos/ # Autonomous member repository clones (gitignored)
|
|
28
28
|
│ ├── backend/ # Standard Git repository (remote: api.git)
|
|
@@ -55,15 +55,15 @@ Member repository files are never tracked or committed to the parent meta-repo.
|
|
|
55
55
|
To ensure code search tools (ripgrep, Claude Code, VS Code search) and AI indexers (Cursor codebase indexing, Gemini CLI) can discover and index member code across repos, Repo Nexus automatically maintains un-ignore files (`.ignore`, `.cursorignore`, `.geminiignore`) with `!repos/*`. This allows AI assistants and search engines to index code while meta-repo Git remains completely clean.
|
|
56
56
|
|
|
57
57
|
### 2. The `.rnex/` Orchestration Directory
|
|
58
|
-
The `.rnex/` directory
|
|
59
|
-
* **`.rnex/
|
|
60
|
-
* **`.rnex/plugins/`**: Isolated directory per enabled plugin (`.rnex/plugins/<plugin-name>/`),
|
|
58
|
+
The `.rnex/` directory encapsulates active plugins, automation hooks, and agentic skills:
|
|
59
|
+
* **`.rnex/skills/`**: Core workspace-wide agentic skills owned by `rnex` (`clone-sync.md`, `batch-exec.md`, `workspace-status.md`).
|
|
60
|
+
* **`.rnex/plugins/`**: Isolated directory per enabled plugin (`.rnex/plugins/<plugin-name>/`), encapsulating plugin-owned skills, rules, and agents without naming collisions.
|
|
61
61
|
|
|
62
62
|
### 3. Member Repository Context Mirroring
|
|
63
63
|
When an AI assistant (such as Claude Code, Cursor, or Gemini) operates inside a specific member repository (`repos/backend/`), it cannot inspect files outside that repository's root.
|
|
64
64
|
|
|
65
65
|
Repo Nexus solves this through **automated context projection**:
|
|
66
|
-
* Active plugins and
|
|
66
|
+
* Active plugins and workspace skills are mirrored into `repos/<name>/.rnex/`.
|
|
67
67
|
* Local instruction files (`repos/<name>/.rnex/instructions.md`) provide member-level awareness of the parent meta-repo.
|
|
68
68
|
* Member autonomy is preserved without duplicating maintenance.
|
|
69
69
|
|
|
@@ -65,13 +65,11 @@ plugins:
|
|
|
65
65
|
# AI Provider Plugins
|
|
66
66
|
claude:
|
|
67
67
|
instructions: true
|
|
68
|
-
|
|
69
|
-
workflows: true
|
|
68
|
+
skills: true
|
|
70
69
|
|
|
71
70
|
cursor:
|
|
72
71
|
instructions: true
|
|
73
|
-
|
|
74
|
-
workflows: true
|
|
72
|
+
skills: true
|
|
75
73
|
|
|
76
74
|
# Knowledge & Agent Protocol Plugins
|
|
77
75
|
karpathy-llm:
|
|
@@ -64,7 +64,7 @@ rnex init -y
|
|
|
64
64
|
[rnex] Initializing Repo Nexus workspace in /Users/dev/my-workspace...
|
|
65
65
|
[rnex] Created rnex.yaml (version 0.5.13)
|
|
66
66
|
[rnex] Created ./repos/ directory
|
|
67
|
-
[rnex] Created .rnex/ and standardized
|
|
67
|
+
[rnex] Created .rnex/ and standardized skills
|
|
68
68
|
[rnex] Reconciled .gitignore
|
|
69
69
|
[rnex] Workspace initialized successfully.
|
|
70
70
|
```
|
|
@@ -30,7 +30,7 @@ Repo Nexus acts as a lightweight coordinator around your repositories without al
|
|
|
30
30
|
* **Zero Submodule Tracking**: Member repositories clone into `./repos/<name>/` as standard, autonomous Git repositories. The umbrella meta-repo never tracks submodule pointers.
|
|
31
31
|
* **Complete Git Autonomy**: Branch, commit, rebase, and push directly inside each member repository (`cd repos/backend && git commit`).
|
|
32
32
|
* **Unified Workspace View**: Work in a single editor instance with multi-root workspace support (`.code-workspace`) and run batch operations across all repositories via `rnex exec`.
|
|
33
|
-
* **Universal AI Context Routing**: AI rules, skills,
|
|
33
|
+
* **Universal AI Context Routing**: AI rules, skills, and instructions are scoped and mirrored across Claude, Cursor, Copilot, Gemini, and Windsurf formats automatically.
|
|
34
34
|
|
|
35
35
|
## Architectural Comparison
|
|
36
36
|
|
package/docs/index.md
CHANGED
|
@@ -28,7 +28,7 @@ features:
|
|
|
28
28
|
details: Autonomous member repositories clone directly into ./repos/ while remaining independent Git repositories. No detached HEAD hell.
|
|
29
29
|
- icon: 🤖
|
|
30
30
|
title: Scoped AI Context Mirroring
|
|
31
|
-
details: Automatically projects shared routing rules,
|
|
31
|
+
details: Automatically projects shared routing rules, instructions, and skills into Claude Code, Cursor, Copilot, Gemini, and Windsurf formats.
|
|
32
32
|
- icon: 🧠
|
|
33
33
|
title: Karpathy LLM Wiki Architecture
|
|
34
34
|
details: Built-in support for Andrej Karpathy's 4 cardinal principles for coding agents, context engineering, and autonomous LLM wikis.
|
package/docs/plugins/index.md
CHANGED
|
@@ -5,7 +5,7 @@ description: Modular plugin architecture for Repo Nexus, multi-provider AI conte
|
|
|
5
5
|
|
|
6
6
|
# Plugin Ecosystem
|
|
7
7
|
|
|
8
|
-
Repo Nexus includes an extensible, modular plugin engine designed to equip multi-repo workspaces with AI assistant integrations, standardized
|
|
8
|
+
Repo Nexus includes an extensible, modular plugin engine designed to equip multi-repo workspaces with AI assistant integrations, standardized skills, agent workflows, and shared context protocols.
|
|
9
9
|
|
|
10
10
|
Each plugin is self-contained and managed declaratively via `rnex.yaml` or workstation-specific overrides in `.local.rnex.yaml`.
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ Each plugin is self-contained and managed declaratively via `rnex.yaml` or works
|
|
|
14
14
|
## Core Architecture
|
|
15
15
|
|
|
16
16
|
### 1. Scoped Isolation (`.rnex/plugins/<plugin-name>/`)
|
|
17
|
-
When a plugin is enabled, its rules, instructions, workflows,
|
|
17
|
+
When a plugin is enabled, its rules, instructions, workflows, and skills are scoped directly under `.rnex/plugins/<plugin-name>/`. This keeps workspace root directories clean, avoids naming collisions between plugins, and ensures version-controlled tracking of active extensions.
|
|
18
18
|
|
|
19
19
|
### 2. Member Repository Isolation
|
|
20
20
|
Active plugins are mirrored into each active member repository under `repos/<name>/.rnex/plugins/<plugin-name>/`. When an AI assistant operates inside a specific member repository, it has full local access to the workspace's shared instructions and rules without breaking repository autonomy.
|
|
@@ -98,12 +98,11 @@ plugins:
|
|
|
98
98
|
# AI Provider Plugins
|
|
99
99
|
claude:
|
|
100
100
|
instructions: true
|
|
101
|
-
|
|
102
|
-
workflows: true
|
|
101
|
+
skills: true
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
gemini:
|
|
104
|
+
instructions: true
|
|
105
|
+
skills: true
|
|
107
106
|
|
|
108
107
|
# Functional / Knowledge Plugins
|
|
109
108
|
karpathy-llm:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg width="675" height="516" viewBox="0 0 675 516" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M151.942 307.383H144.376V341.65C144.376 346.161 143.382 349.484 141.393 351.618C139.404 353.752 136.81 354.819 133.608 354.819C130.165 354.819 127.497 353.703 125.605 351.472C123.714 349.241 122.768 345.967 122.768 341.65V259.584C122.768 254.928 123.811 251.557 125.896 249.471C127.982 247.386 131.353 246.343 136.009 246.343H171.149C176 246.343 180.147 246.561 183.59 246.998C187.034 247.386 190.138 248.21 192.903 249.471C196.25 250.878 199.208 252.891 201.779 255.51C204.349 258.129 206.29 261.185 207.599 264.677C208.957 268.12 209.636 271.782 209.636 275.663C209.636 283.617 207.381 289.971 202.87 294.724C198.408 299.477 191.618 302.848 182.499 304.837C186.331 306.874 189.993 309.881 193.485 313.858C196.977 317.836 200.081 322.08 202.797 326.59C205.562 331.053 207.696 335.103 209.2 338.74C210.752 342.329 211.528 344.803 211.528 346.161C211.528 347.568 211.067 348.974 210.146 350.381C209.272 351.739 208.06 352.806 206.508 353.582C204.956 354.407 203.161 354.819 201.124 354.819C198.699 354.819 196.662 354.237 195.013 353.073C193.364 351.957 191.933 350.526 190.72 348.78C189.556 347.034 187.956 344.464 185.918 341.068L177.261 326.663C174.157 321.376 171.368 317.351 168.894 314.586C166.469 311.821 163.995 309.93 161.473 308.911C158.951 307.893 155.774 307.383 151.942 307.383ZM164.311 262.567H144.376V291.887H163.729C168.918 291.887 173.284 291.45 176.824 290.577C180.365 289.656 183.057 288.128 184.9 285.994C186.792 283.811 187.737 280.828 187.737 277.045C187.737 274.086 186.986 271.491 185.482 269.26C183.978 266.981 181.893 265.283 179.225 264.167C176.703 263.1 171.731 262.567 164.311 262.567ZM271.719 257.474L313.261 320.333V256.892C313.261 252.769 314.134 249.689 315.88 247.652C317.675 245.567 320.076 244.524 323.083 244.524C326.187 244.524 328.636 245.567 330.431 247.652C332.226 249.689 333.123 252.769 333.123 256.892V340.777C333.123 350.138 329.243 354.819 321.482 354.819C319.542 354.819 317.796 354.528 316.244 353.946C314.692 353.412 313.237 352.539 311.879 351.327C310.521 350.114 309.26 348.708 308.096 347.107C306.931 345.458 305.767 343.785 304.603 342.087L264.079 279.955V342.451C264.079 346.525 263.134 349.605 261.242 351.69C259.35 353.776 256.925 354.819 253.967 354.819C250.911 354.819 248.462 353.776 246.618 351.69C244.775 349.556 243.854 346.476 243.854 342.451V260.166C243.854 256.674 244.242 253.933 245.018 251.945C245.939 249.762 247.467 247.992 249.601 246.634C251.736 245.227 254.039 244.524 256.513 244.524C258.453 244.524 260.102 244.839 261.46 245.47C262.867 246.1 264.079 246.949 265.098 248.016C266.165 249.083 267.232 250.465 268.299 252.163C269.415 253.861 270.555 255.631 271.719 257.474ZM440.458 263.003H391.786V289.195H436.602C439.9 289.195 442.35 289.947 443.95 291.45C445.599 292.905 446.424 294.845 446.424 297.271C446.424 299.696 445.624 301.684 444.023 303.236C442.423 304.74 439.949 305.492 436.602 305.492H391.786V335.83H442.132C445.527 335.83 448.073 336.63 449.771 338.231C451.517 339.783 452.39 341.869 452.39 344.488C452.39 347.01 451.517 349.071 449.771 350.672C448.073 352.224 445.527 353 442.132 353H383.419C378.714 353 375.319 351.957 373.234 349.872C371.196 347.786 370.178 344.415 370.178 339.759V259.584C370.178 256.48 370.639 253.958 371.56 252.018C372.482 250.029 373.913 248.598 375.853 247.725C377.841 246.804 380.363 246.343 383.419 246.343H440.458C443.902 246.343 446.448 247.119 448.097 248.671C449.795 250.174 450.644 252.163 450.644 254.637C450.644 257.159 449.795 259.196 448.097 260.748C446.448 262.252 443.902 263.003 440.458 263.003ZM479.041 332.265L502.904 297.416L482.824 266.423C480.933 263.416 479.502 260.845 478.532 258.711C477.61 256.528 477.149 254.443 477.149 252.454C477.149 250.417 478.047 248.598 479.841 246.998C481.684 245.348 483.916 244.524 486.535 244.524C489.542 244.524 491.87 245.421 493.519 247.216C495.217 248.962 497.545 252.236 500.503 257.038L516.509 282.938L533.606 257.038C535.013 254.855 536.201 252.988 537.171 251.436C538.19 249.883 539.16 248.598 540.082 247.58C541.003 246.561 542.022 245.809 543.137 245.324C544.301 244.791 545.635 244.524 547.139 244.524C549.855 244.524 552.062 245.348 553.759 246.998C555.505 248.598 556.378 250.514 556.378 252.745C556.378 255.995 554.511 260.409 550.776 265.986L529.751 297.416L552.377 332.265C554.414 335.321 555.893 337.867 556.815 339.904C557.737 341.893 558.197 343.785 558.197 345.579C558.197 347.277 557.785 348.829 556.96 350.235C556.136 351.642 554.972 352.757 553.468 353.582C551.965 354.407 550.267 354.819 548.376 354.819C546.338 354.819 544.617 354.382 543.21 353.509C541.803 352.685 540.664 351.642 539.791 350.381C538.918 349.12 537.293 346.67 534.916 343.033L516.146 313.495L496.211 343.906C494.659 346.331 493.543 348.028 492.864 348.999C492.234 349.969 491.458 350.914 490.536 351.836C489.615 352.757 488.523 353.485 487.262 354.019C486.001 354.552 484.522 354.819 482.824 354.819C480.205 354.819 478.022 354.019 476.276 352.418C474.579 350.817 473.73 348.489 473.73 345.434C473.73 341.844 475.5 337.455 479.041 332.265Z" fill="black"/>
|
|
3
|
+
<path d="M114.273 8.5C92.1816 8.5 74.2729 26.4086 74.2729 48.5V100H587.773V89.5C587.773 72.9315 574.341 59.5 557.773 59.5H288.273L254.778 16.2534C250.99 11.3626 245.152 8.5 238.966 8.5H114.273Z" fill="url(#paint0_linear_4_98)"/>
|
|
4
|
+
<path d="M74.2729 100H48.5049C24.8284 100 6.33321 120.452 8.70631 144.009L38.9281 444.016C42.5307 479.778 72.6591 507 108.602 507C275.635 507 391.074 507 558.409 507C593.736 507 623.539 480.677 627.889 445.619L665.199 144.925C668.159 121.063 649.548 100 625.503 100H587.773M74.2729 100V48.5C74.2729 26.4086 92.1816 8.5 114.273 8.5H238.966C245.152 8.5 250.99 11.3626 254.778 16.2534L288.273 59.5H557.773C574.341 59.5 587.773 72.9315 587.773 89.5V100M74.2729 100H587.773" stroke="url(#paint1_linear_4_98)" stroke-width="17"/>
|
|
5
|
+
<defs>
|
|
6
|
+
<linearGradient id="paint0_linear_4_98" x1="337.523" y1="8.5" x2="337.523" y2="507" gradientUnits="userSpaceOnUse">
|
|
7
|
+
<stop stop-color="#59CEA2"/>
|
|
8
|
+
<stop offset="1" stop-color="#8CCDB5"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="paint1_linear_4_98" x1="639.273" y1="332" x2="17.773" y2="332" gradientUnits="userSpaceOnUse">
|
|
11
|
+
<stop stop-color="#57B3E6"/>
|
|
12
|
+
<stop offset="1" stop-color="#59CEA2"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
</defs>
|
|
15
|
+
</svg>
|
package/lib/ai.sh
CHANGED
|
@@ -672,11 +672,11 @@ sync_windsurf() {
|
|
|
672
672
|
}
|
|
673
673
|
|
|
674
674
|
sync_ai_providers() {
|
|
675
|
-
# Clean legacy Copilot prompt harness if present
|
|
676
|
-
rm -rf "$NEXUS_DIR/.github/prompts"
|
|
675
|
+
# Clean legacy Copilot prompt harness and skills if present, strictly preserving custom Copilot instructions
|
|
676
|
+
rm -rf "$NEXUS_DIR/.github/prompts" 2>/dev/null || true
|
|
677
|
+
clean_rnex_instructions "$NEXUS_DIR/.github/copilot-instructions.md"
|
|
677
678
|
clean_provider_user_skills "$NEXUS_DIR/.github/skills"
|
|
678
679
|
clean_provider_agents "$NEXUS_DIR/.github/agents" ".agent.md"
|
|
679
|
-
rmdir "$NEXUS_DIR/.github" 2>/dev/null || true
|
|
680
680
|
|
|
681
681
|
sync_claude
|
|
682
682
|
sync_gemini
|
|
@@ -81,7 +81,7 @@ _rnex() {
|
|
|
81
81
|
'enable:Enable a repository in active workspace'
|
|
82
82
|
'disable:Disable a repository in workspace'
|
|
83
83
|
'list:List member repositories'
|
|
84
|
-
'sync:Reconcile workspace, plugins,
|
|
84
|
+
'sync:Reconcile workspace, plugins, skills, and member .rnex directories'
|
|
85
85
|
'status:Inspect workspace health and status (read-only)'
|
|
86
86
|
'rnex-dir:Toggle .rnex directory integration for a repo'
|
|
87
87
|
'update:Upgrade workspace configuration and routing instructions'
|
|
@@ -162,7 +162,7 @@ complete -c rnex -n "__fish_use_subcommand" -a remove -d "Remove a repository"
|
|
|
162
162
|
complete -c rnex -n "__fish_use_subcommand" -a enable -d "Enable a repository"
|
|
163
163
|
complete -c rnex -n "__fish_use_subcommand" -a disable -d "Disable a repository"
|
|
164
164
|
complete -c rnex -n "__fish_use_subcommand" -a list -d "List repositories"
|
|
165
|
-
complete -c rnex -n "__fish_use_subcommand" -a sync -d "Reconcile workspace, plugins,
|
|
165
|
+
complete -c rnex -n "__fish_use_subcommand" -a sync -d "Reconcile workspace, plugins, skills, and repos"
|
|
166
166
|
complete -c rnex -n "__fish_seen_subcommand_from sync" -l yes -s y -d "Automatically answer yes to prompts"
|
|
167
167
|
complete -c rnex -n "__fish_seen_subcommand_from sync" -l quiet -s q -d "Suppress non-error output"
|
|
168
168
|
complete -c rnex -n "__fish_seen_subcommand_from sync" -l upgrade -d "Upgrade workspace configuration schema"
|
package/lib/yaml.sh
CHANGED
|
@@ -261,34 +261,18 @@ yaml_enable_plugin() {
|
|
|
261
261
|
if ! _yaml_list_plugins_from_file "$_target_file" | grep -qx "$_name" 2>/dev/null; then
|
|
262
262
|
_tmp="$(mktemp)"
|
|
263
263
|
case "$_name" in
|
|
264
|
-
copilot)
|
|
265
|
-
awk -v name="$_name" '
|
|
266
|
-
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ {
|
|
267
|
-
print
|
|
268
|
-
printf " %s:\n prompts: true\n workflows: true\n", name
|
|
269
|
-
added=1
|
|
270
|
-
next
|
|
271
|
-
}
|
|
272
|
-
{ print }
|
|
273
|
-
END {
|
|
274
|
-
if (!added) {
|
|
275
|
-
printf "plugins:\n %s:\n prompts: true\n workflows: true\n", name
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
' "$_target_file" > "$_tmp" && mv "$_tmp" "$_target_file"
|
|
279
|
-
;;
|
|
280
264
|
claude|gemini|cursor|windsurf)
|
|
281
265
|
awk -v name="$_name" '
|
|
282
266
|
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ {
|
|
283
267
|
print
|
|
284
|
-
printf " %s:\n instructions: true\n
|
|
268
|
+
printf " %s:\n instructions: true\n skills: true\n", name
|
|
285
269
|
added=1
|
|
286
270
|
next
|
|
287
271
|
}
|
|
288
272
|
{ print }
|
|
289
273
|
END {
|
|
290
274
|
if (!added) {
|
|
291
|
-
printf "plugins:\n %s:\n instructions: true\n
|
|
275
|
+
printf "plugins:\n %s:\n instructions: true\n skills: true\n", name
|
|
292
276
|
}
|
|
293
277
|
}
|
|
294
278
|
' "$_target_file" > "$_tmp" && mv "$_tmp" "$_target_file"
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ A built-in Repo Nexus plugin providing bidirectional alignment and operational p
|
|
|
5
5
|
## Capabilities
|
|
6
6
|
|
|
7
7
|
1. **Instructions Integration**: Generates and maintains `CLAUDE.md` with Repo Nexus routing instructions while preserving custom instructions outside delimiters.
|
|
8
|
-
2. **
|
|
8
|
+
2. **User Skills Generation**: Standardized Repo Nexus core skills and active plugins' skills are mirrored as zero-logic User Skill pointers (`rnex-<name>.md`) in `.claude/skills/`.
|
|
9
9
|
|
|
10
10
|
## Usage
|
|
11
11
|
|
|
@@ -19,8 +19,7 @@ Or configure options in `rnex.yaml` or `.local.rnex.yaml`:
|
|
|
19
19
|
plugins:
|
|
20
20
|
claude:
|
|
21
21
|
instructions: true
|
|
22
|
-
|
|
23
|
-
workflows: true
|
|
22
|
+
skills: true
|
|
24
23
|
```
|
|
25
24
|
|
|
26
25
|
## Options
|
|
@@ -28,6 +27,5 @@ plugins:
|
|
|
28
27
|
| Option | Type | Default | Description |
|
|
29
28
|
|--------|------|---------|-------------|
|
|
30
29
|
| `instructions` | boolean | `true` | Maintain routing in `CLAUDE.md` |
|
|
31
|
-
| `
|
|
32
|
-
| `workflows` | boolean | `true` | Mirror workflows to `.claude/commands/` and `.claude/prompts/` |
|
|
30
|
+
| `skills` | boolean | `true` | Generate user skills in `.claude/skills/` |
|
|
33
31
|
| `enabled` | boolean | `true` | Set to `false` in `.local.rnex.yaml` to override team config |
|
|
@@ -4,8 +4,8 @@ This workspace has the Repo Nexus `claude` plugin enabled.
|
|
|
4
4
|
|
|
5
5
|
## Operating Principles
|
|
6
6
|
- **Claude Instructions (`CLAUDE.md`)**: Synthesizes workspace routing protocol between `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->`, preserving any manual user instructions outside those markers. This serves as the primary instructions file for Anthropic Claude Code CLI and Claude Desktop.
|
|
7
|
-
- **
|
|
8
|
-
- **Decoupled Cross-Plugin Discovery**: The `claude` provider discovers and
|
|
7
|
+
- **User Skills (`.claude/skills/rnex-*.md`)**: Zero-logic user skill pointers linking directly to core skills (`.rnex/skills/`) and active plugins' skills (`.rnex/plugins/<name>/skills/`).
|
|
8
|
+
- **Decoupled Cross-Plugin Discovery**: The `claude` provider discovers and registers user skills from whatever Repo Nexus plugins are currently active.
|
|
9
9
|
|
|
10
10
|
## Configuration
|
|
11
11
|
Configure plugin options in `rnex.yaml` or override them per developer in `.local.rnex.yaml`:
|
|
@@ -14,8 +14,7 @@ Configure plugin options in `rnex.yaml` or override them per developer in `.loca
|
|
|
14
14
|
plugins:
|
|
15
15
|
claude:
|
|
16
16
|
instructions: true # Maintain routing in CLAUDE.md (default: true)
|
|
17
|
-
|
|
18
|
-
workflows: true # Mirror workflows (default: true)
|
|
17
|
+
skills: true # Generate user skills in .claude/skills/ (default: true)
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
To disable locally without altering team configuration, add to `.local.rnex.yaml`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: claude
|
|
2
2
|
version: 0.5.1
|
|
3
|
-
description: Anthropic Claude Code integration (maintains CLAUDE.md instructions and
|
|
3
|
+
description: Anthropic Claude Code integration (maintains CLAUDE.md instructions and generates user skills in .claude/skills/)
|
|
4
4
|
author: unoxen
|
|
5
5
|
homepage: https://github.com/unoxen/repo-nexus
|
|
6
6
|
instructions:
|
|
@@ -5,7 +5,7 @@ A built-in Repo Nexus plugin providing bidirectional alignment and operational p
|
|
|
5
5
|
## Capabilities
|
|
6
6
|
|
|
7
7
|
1. **Instructions Integration**: Generates and maintains `.cursorrules` and `.cursor/rules/rnex-context.mdc` with Repo Nexus routing instructions while preserving custom instructions outside delimiters.
|
|
8
|
-
2. **
|
|
8
|
+
2. **User Skills Generation**: Standardized Repo Nexus core skills and active plugins' skills are mirrored as zero-logic User Skill pointers (`rnex-<name>.md`) in `.cursor/rules/`.
|
|
9
9
|
3. **Codebase Indexing Un-Ignore**: Maintains `.cursorignore` (`!repos/*`) so Cursor's semantic indexing engine indexes code across member repositories.
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
@@ -20,8 +20,7 @@ Or configure options in `rnex.yaml` or `.local.rnex.yaml`:
|
|
|
20
20
|
plugins:
|
|
21
21
|
cursor:
|
|
22
22
|
instructions: true
|
|
23
|
-
|
|
24
|
-
workflows: true
|
|
23
|
+
skills: true
|
|
25
24
|
```
|
|
26
25
|
|
|
27
26
|
## Options
|
|
@@ -29,6 +28,5 @@ plugins:
|
|
|
29
28
|
| Option | Type | Default | Description |
|
|
30
29
|
|--------|------|---------|-------------|
|
|
31
30
|
| `instructions` | boolean | `true` | Maintain routing in `.cursorrules` & `.cursor/rules/` |
|
|
32
|
-
| `
|
|
33
|
-
| `workflows` | boolean | `true` | Mirror workflows to `.cursor/prompts/` |
|
|
31
|
+
| `skills` | boolean | `true` | Generate user skills in `.cursor/rules/` |
|
|
34
32
|
| `enabled` | boolean | `true` | Set to `false` in `.local.rnex.yaml` to override team config |
|
|
@@ -4,9 +4,9 @@ This workspace has the Repo Nexus `cursor` plugin enabled.
|
|
|
4
4
|
|
|
5
5
|
## Operating Principles
|
|
6
6
|
- **Cursor Rules (`.cursorrules` & `.cursor/rules/repo-nexus.mdc`)**: Synthesizes workspace routing protocol between `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->`, supporting both legacy `.cursorrules` and modern Cursor MDC rules format (`alwaysApply: true`).
|
|
7
|
-
- **
|
|
7
|
+
- **User Skills (`.cursor/rules/rnex-*.md`)**: Zero-logic user skill pointers linking directly to core skills (`.rnex/skills/`) and active plugins' skills (`.rnex/plugins/<name>/skills/`).
|
|
8
8
|
- **Codebase Indexing Un-Ignore (`.cursorignore`)**: Un-ignores member repositories (`!repos/*`) so Cursor's semantic indexing engine indexes code across member repositories, while workspace Git continues to ignore them.
|
|
9
|
-
- **Decoupled Cross-Plugin Discovery**: The `cursor` provider discovers and
|
|
9
|
+
- **Decoupled Cross-Plugin Discovery**: The `cursor` provider discovers and registers user skills from whatever Repo Nexus plugins are currently active.
|
|
10
10
|
|
|
11
11
|
## Configuration
|
|
12
12
|
Configure plugin options in `rnex.yaml` or override them per developer in `.local.rnex.yaml`:
|
|
@@ -15,8 +15,7 @@ Configure plugin options in `rnex.yaml` or override them per developer in `.loca
|
|
|
15
15
|
plugins:
|
|
16
16
|
cursor:
|
|
17
17
|
instructions: true # Maintain routing in .cursorrules & .cursor/rules/ (default: true)
|
|
18
|
-
|
|
19
|
-
workflows: true # Mirror workflows (default: true)
|
|
18
|
+
skills: true # Generate user skills in .cursor/rules/ (default: true)
|
|
20
19
|
```
|
|
21
20
|
|
|
22
21
|
To disable locally without altering team configuration, add to `.local.rnex.yaml`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: cursor
|
|
2
2
|
version: 0.5.1
|
|
3
|
-
description: Cursor IDE integration (maintains .cursorrules and .cursor/rules
|
|
3
|
+
description: Cursor IDE integration (maintains .cursorrules and generates user skills in .cursor/rules/)
|
|
4
4
|
author: unoxen
|
|
5
5
|
homepage: https://github.com/unoxen/repo-nexus
|
|
6
6
|
instructions:
|
|
@@ -5,7 +5,7 @@ A built-in Repo Nexus plugin providing bidirectional alignment and operational p
|
|
|
5
5
|
## Capabilities
|
|
6
6
|
|
|
7
7
|
1. **Instructions Integration**: Generates and maintains `GEMINI.md` with Repo Nexus routing instructions while preserving custom instructions outside delimiters.
|
|
8
|
-
2. **
|
|
8
|
+
2. **User Skills Generation**: Standardized Repo Nexus core skills and active plugins' skills are mirrored as zero-logic User Skill pointers (`rnex-<name>.md`) in `.gemini/skills/`.
|
|
9
9
|
3. **File Discovery Un-Ignore**: Maintains `.geminiignore` (`!repos/*`) so Gemini CLI and Google Antigravity can discover and access member repository files.
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
@@ -20,8 +20,7 @@ Or configure options in `rnex.yaml` or `.local.rnex.yaml`:
|
|
|
20
20
|
plugins:
|
|
21
21
|
gemini:
|
|
22
22
|
instructions: true
|
|
23
|
-
|
|
24
|
-
workflows: true
|
|
23
|
+
skills: true
|
|
25
24
|
```
|
|
26
25
|
|
|
27
26
|
## Options
|
|
@@ -29,6 +28,5 @@ plugins:
|
|
|
29
28
|
| Option | Type | Default | Description |
|
|
30
29
|
|--------|------|---------|-------------|
|
|
31
30
|
| `instructions` | boolean | `true` | Maintain routing in `GEMINI.md` |
|
|
32
|
-
| `
|
|
33
|
-
| `workflows` | boolean | `true` | Mirror workflows to `.gemini/prompts/` |
|
|
31
|
+
| `skills` | boolean | `true` | Generate user skills in `.gemini/skills/` |
|
|
34
32
|
| `enabled` | boolean | `true` | Set to `false` in `.local.rnex.yaml` to override team config |
|
|
@@ -4,9 +4,9 @@ This workspace has the Repo Nexus `gemini` plugin enabled.
|
|
|
4
4
|
|
|
5
5
|
## Operating Principles
|
|
6
6
|
- **Gemini Instructions (`GEMINI.md`)**: Synthesizes workspace routing protocol between `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->`, preserving any manual user instructions outside those markers. This serves as the primary instructions file for Google Gemini CLI and Google Antigravity.
|
|
7
|
-
- **
|
|
7
|
+
- **User Skills (`.gemini/skills/rnex-*.md`)**: Zero-logic user skill pointers linking directly to core skills (`.rnex/skills/`) and active plugins' skills (`.rnex/plugins/<name>/skills/`).
|
|
8
8
|
- **File Discovery Un-Ignore (`.geminiignore`)**: Un-ignores member repositories (`!repos/*`) so Gemini CLI and Google Antigravity can discover and access member repository files, while workspace Git continues to ignore them.
|
|
9
|
-
- **Decoupled Cross-Plugin Discovery**: The `gemini` provider discovers and
|
|
9
|
+
- **Decoupled Cross-Plugin Discovery**: The `gemini` provider discovers and registers user skills from whatever Repo Nexus plugins are currently active.
|
|
10
10
|
|
|
11
11
|
## Configuration
|
|
12
12
|
Configure plugin options in `rnex.yaml` or override them per developer in `.local.rnex.yaml`:
|
|
@@ -15,8 +15,7 @@ Configure plugin options in `rnex.yaml` or override them per developer in `.loca
|
|
|
15
15
|
plugins:
|
|
16
16
|
gemini:
|
|
17
17
|
instructions: true # Maintain routing in GEMINI.md (default: true)
|
|
18
|
-
|
|
19
|
-
workflows: true # Mirror workflows (default: true)
|
|
18
|
+
skills: true # Generate user skills in .gemini/skills/ (default: true)
|
|
20
19
|
```
|
|
21
20
|
|
|
22
21
|
To disable locally without altering team configuration, add to `.local.rnex.yaml`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: gemini
|
|
2
2
|
version: 0.5.1
|
|
3
|
-
description: Google Gemini and Antigravity integration (maintains GEMINI.md instructions and
|
|
3
|
+
description: Google Gemini and Antigravity integration (maintains GEMINI.md instructions and generates user skills in .gemini/skills/)
|
|
4
4
|
author: unoxen
|
|
5
5
|
homepage: https://github.com/unoxen/repo-nexus
|
|
6
6
|
instructions:
|
|
@@ -197,6 +197,18 @@ ingest_member_readme() {
|
|
|
197
197
|
_needs_gen=1
|
|
198
198
|
fi
|
|
199
199
|
|
|
200
|
+
# Determine navigation reference (avoid linking to missing navigation pages)
|
|
201
|
+
_nav_target="index.md"
|
|
202
|
+
_nav_label="Wiki Index"
|
|
203
|
+
_nav_related="[]"
|
|
204
|
+
_nav_extends="[]"
|
|
205
|
+
if [ -f "$_wiki_path/member-repositories.md" ]; then
|
|
206
|
+
_nav_target="member-repositories.md"
|
|
207
|
+
_nav_label="Member Repositories"
|
|
208
|
+
_nav_related='["member-repositories.md"]'
|
|
209
|
+
_nav_extends='["member-repositories.md"]'
|
|
210
|
+
fi
|
|
211
|
+
|
|
200
212
|
if [ "$_needs_gen" -eq 1 ]; then
|
|
201
213
|
cat > "$_target_page" <<PAGE_EOF
|
|
202
214
|
---
|
|
@@ -204,8 +216,8 @@ title: "Member Repo: ${_m_repo}"
|
|
|
204
216
|
tags: [member-repo, ${_m_repo}]
|
|
205
217
|
last_updated: ${_today}
|
|
206
218
|
sources: ["${_rel_source}"]
|
|
207
|
-
related:
|
|
208
|
-
extends:
|
|
219
|
+
related: ${_nav_related}
|
|
220
|
+
extends: ${_nav_extends}
|
|
209
221
|
contradicts: []
|
|
210
222
|
mentioned_in: ["index.md", "hot.md"]
|
|
211
223
|
---
|
|
@@ -221,7 +233,7 @@ ${_m_summary}
|
|
|
221
233
|
* **Management:** Tracked as an autonomous Git member repository in Repo Nexus.
|
|
222
234
|
|
|
223
235
|
## Contextual Links
|
|
224
|
-
* See [
|
|
236
|
+
* See [${_nav_label}](./${_nav_target}) for workspace member repository catalog.
|
|
225
237
|
PAGE_EOF
|
|
226
238
|
|
|
227
239
|
# Append to Operation Log (_log.md)
|
|
@@ -277,8 +289,17 @@ LOG_EOF
|
|
|
277
289
|
|
|
278
290
|
# 5. Register in hot cache (hot.md) under Section 1 if not already present
|
|
279
291
|
if [ -f "$_wiki_path/hot.md" ] && ! grep -q "${_rel_loc}" "$_wiki_path/hot.md"; then
|
|
292
|
+
# Ultra-concise summary for bounded hot cache (~500-word ceiling)
|
|
293
|
+
_hot_summary="$(printf '%s' "$_m_summary" | sed -e 's/[.?!][[:space:]].*//' -e 's/[.?!]$//' | awk '{
|
|
294
|
+
out=""
|
|
295
|
+
for (i=1; i<=NF && i<=7; i++) {
|
|
296
|
+
out = (out == "") ? $i : out " " $i
|
|
297
|
+
}
|
|
298
|
+
print out
|
|
299
|
+
}')"
|
|
300
|
+
[ -z "$_hot_summary" ] && _hot_summary="Member repository"
|
|
301
|
+
_hot_line="* **${_m_repo} (\`${_rel_loc}\`):** ${_hot_summary}."
|
|
280
302
|
_tmp_hot="$(mktemp)"
|
|
281
|
-
_hot_line="* **${_m_repo} (\`${_rel_loc}\`):** ${_m_summary}"
|
|
282
303
|
if LINE="$_hot_line" awk '
|
|
283
304
|
/^## 1\. Architecture & Member Repo Map/ {
|
|
284
305
|
print
|
|
@@ -345,3 +366,34 @@ if [ -d "$RNEX_ROOT/$REPOS_DIR" ]; then
|
|
|
345
366
|
done
|
|
346
367
|
done
|
|
347
368
|
fi
|
|
369
|
+
|
|
370
|
+
# 3. Enforce strict ~500-word ceiling on hot.md (condense Section 1 if needed)
|
|
371
|
+
if [ -f "$_wiki_path/hot.md" ]; then
|
|
372
|
+
_hot_words="$(wc -w < "$_wiki_path/hot.md" 2>/dev/null || echo 0)"
|
|
373
|
+
if [ "$_hot_words" -gt 480 ]; then
|
|
374
|
+
_num_repos="$(grep -cE '^\* \*\*[a-zA-Z0-9_.-]+ \(`?repos/' "$_wiki_path/hot.md" 2>/dev/null || echo 0)"
|
|
375
|
+
if [ "$_num_repos" -gt 3 ]; then
|
|
376
|
+
_repo_names="$(grep -E '^\* \*\*[a-zA-Z0-9_.-]+ \(`?repos/' "$_wiki_path/hot.md" | sed -e 's/^\* \*\*//' -e 's/ .*//' | tr '\n' ', ' | sed -e 's/, $//')"
|
|
377
|
+
_clean_repos="$(printf '%s' "$REPOS_DIR" | sed -e 's#^\./##' -e 's#^/##' -e 's#/$##')"
|
|
378
|
+
_tmp_b="$(mktemp)"
|
|
379
|
+
if awk -v rnames="$_repo_names" -v nrepos="$_num_repos" -v rdir="$_clean_repos" '
|
|
380
|
+
BEGIN { in_s1=0; replaced=0 }
|
|
381
|
+
/^## 1\. Architecture & Member Repo Map/ { in_s1=1; print; next }
|
|
382
|
+
in_s1 && /^## / { in_s1=0 }
|
|
383
|
+
in_s1 && /^\* \*\*[a-zA-Z0-9_.-]+ \(`?repos\// {
|
|
384
|
+
if (!replaced) {
|
|
385
|
+
print "* **Member Repositories (" nrepos " repos):** Autonomous repositories under `" rdir "/`: " rnames ". See [Wiki Index](./index.md#member-repositories) for individual architecture pages."
|
|
386
|
+
replaced=1
|
|
387
|
+
}
|
|
388
|
+
next
|
|
389
|
+
}
|
|
390
|
+
{ print }
|
|
391
|
+
' "$_wiki_path/hot.md" > "$_tmp_b"; then
|
|
392
|
+
mv "$_tmp_b" "$_wiki_path/hot.md"
|
|
393
|
+
else
|
|
394
|
+
rm -f "$_tmp_b"
|
|
395
|
+
fi
|
|
396
|
+
fi
|
|
397
|
+
fi
|
|
398
|
+
fi
|
|
399
|
+
|
|
@@ -5,7 +5,7 @@ A built-in Repo Nexus plugin providing bidirectional alignment and operational p
|
|
|
5
5
|
## Capabilities
|
|
6
6
|
|
|
7
7
|
1. **Instructions Integration**: Generates and maintains `.windsurfrules` with Repo Nexus routing instructions while preserving custom instructions outside delimiters.
|
|
8
|
-
2. **
|
|
8
|
+
2. **User Skills Generation**: Standardized Repo Nexus core skills and active plugins' skills are mirrored as zero-logic User Skill pointers (`rnex-<name>.md`) in `.windsurf/rules/`.
|
|
9
9
|
|
|
10
10
|
## Usage
|
|
11
11
|
|
|
@@ -19,8 +19,7 @@ Or configure options in `rnex.yaml` or `.local.rnex.yaml`:
|
|
|
19
19
|
plugins:
|
|
20
20
|
windsurf:
|
|
21
21
|
instructions: true
|
|
22
|
-
|
|
23
|
-
workflows: true
|
|
22
|
+
skills: true
|
|
24
23
|
```
|
|
25
24
|
|
|
26
25
|
## Options
|
|
@@ -28,6 +27,5 @@ plugins:
|
|
|
28
27
|
| Option | Type | Default | Description |
|
|
29
28
|
|--------|------|---------|-------------|
|
|
30
29
|
| `instructions` | boolean | `true` | Maintain routing in `.windsurfrules` |
|
|
31
|
-
| `
|
|
32
|
-
| `workflows` | boolean | `true` | Mirror workflows to `.windsurf/prompts/` |
|
|
30
|
+
| `skills` | boolean | `true` | Generate user skills in `.windsurf/rules/` |
|
|
33
31
|
| `enabled` | boolean | `true` | Set to `false` in `.local.rnex.yaml` to override team config |
|
|
@@ -4,8 +4,8 @@ This workspace has the Repo Nexus `windsurf` plugin enabled.
|
|
|
4
4
|
|
|
5
5
|
## Operating Principles
|
|
6
6
|
- **Windsurf Rules (`.windsurfrules`)**: Synthesizes workspace routing protocol between `<!-- REPO-NEXUS:START -->` and `<!-- REPO-NEXUS:END -->`, preserving manual user rules outside delimiters.
|
|
7
|
-
- **
|
|
8
|
-
- **Decoupled Cross-Plugin Discovery**: The `windsurf` provider discovers and
|
|
7
|
+
- **User Skills (`.windsurf/rules/rnex-*.md`)**: Zero-logic user skill pointers linking directly to core skills (`.rnex/skills/`) and active plugins' skills (`.rnex/plugins/<name>/skills/`).
|
|
8
|
+
- **Decoupled Cross-Plugin Discovery**: The `windsurf` provider discovers and registers user skills from whatever Repo Nexus plugins are currently active.
|
|
9
9
|
|
|
10
10
|
## Configuration
|
|
11
11
|
Configure plugin options in `rnex.yaml` or override them per developer in `.local.rnex.yaml`:
|
|
@@ -14,8 +14,7 @@ Configure plugin options in `rnex.yaml` or override them per developer in `.loca
|
|
|
14
14
|
plugins:
|
|
15
15
|
windsurf:
|
|
16
16
|
instructions: true # Maintain routing in .windsurfrules (default: true)
|
|
17
|
-
|
|
18
|
-
workflows: true # Mirror workflows (default: true)
|
|
17
|
+
skills: true # Generate user skills in .windsurf/rules/ (default: true)
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
To disable locally without altering team configuration, add to `.local.rnex.yaml`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: windsurf
|
|
2
2
|
version: 0.5.1
|
|
3
|
-
description: Windsurf IDE integration (maintains .windsurfrules and
|
|
3
|
+
description: Windsurf IDE integration (maintains .windsurfrules and generates user skills in .windsurf/rules/)
|
|
4
4
|
author: unoxen
|
|
5
5
|
homepage: https://github.com/unoxen/repo-nexus
|
|
6
6
|
instructions:
|
|
File without changes
|