repo-nexus 0.2.9 → 0.2.11
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/README.md +6 -5
- package/docs/rnex.example.yaml +3 -2
- package/package.json +1 -1
- package/rnex +97 -20
- package/toolkit/plugins/karpathy-llm/README.md +21 -18
- package/toolkit/plugins/karpathy-llm/plugin.yaml +6 -6
- package/toolkit/plugins/karpathy-llm/rules/KARPATHY_RULES.md +3 -3
- package/toolkit/plugins/karpathy-llm/scripts/wiki-lint-trigger.sh +20 -5
package/README.md
CHANGED
|
@@ -202,7 +202,7 @@ rnex plugin disable karpathy-llm
|
|
|
202
202
|
### Built-in Plugin: `karpathy-llm`
|
|
203
203
|
The `karpathy-llm` plugin packages Andrej Karpathy's verified LLM agent design patterns, context engineering principles, and the autonomous **Karpathy LLM Wiki** architecture (based on [`setup-karpathy-wiki.md`](https://github.com/nu-nenoi/ai-toolkit/blob/main/prompts/setup-karpathy-wiki.md), available locally in `toolkit/prompts/setup-karpathy-wiki.md`):
|
|
204
204
|
* **Step 0 — Configuration Interview:** Guides setup decisions including target agent instruction file (`AGENTS.md`, `CLAUDE.md`, `.cursor/rules/wiki.mdc`, etc.), wiki purpose (codebase, second brain, research, content archive), organization layout (flat vs structured), and automation enablement.
|
|
205
|
-
* **The 4 Cardinal Agent Rules** (`.
|
|
205
|
+
* **The 4 Cardinal Agent Rules** (`.rnex/rules/KARPATHY_RULES.md`):
|
|
206
206
|
1. *Think Before Coding:* Formulate explicit assumptions, boundary checks, and trade-offs before writing code.
|
|
207
207
|
2. *Simplicity First:* Minimal abstractions, readable implementations, zero speculative boilerplate.
|
|
208
208
|
3. *Surgical Changes:* Minimal blast radius, preserved comments/docstrings, and tight diffs.
|
|
@@ -213,9 +213,9 @@ The `karpathy-llm` plugin packages Andrej Karpathy's verified LLM agent design p
|
|
|
213
213
|
* **Control Index (`/wiki/index.md`):** Master navigation index with `lint_trigger: enabled|disabled` toggle.
|
|
214
214
|
* **Rolling Context (`/wiki/hot.md`):** ~500-word quick-orient context cache for AI agents.
|
|
215
215
|
* **Operation Log (`/wiki/_log.md`):** Append-only audit trail of ingest and lint operations.
|
|
216
|
-
* **Session Counter (
|
|
217
|
-
* **Autonomous Lint Trigger (
|
|
218
|
-
* **Standardized Workflows (`.
|
|
216
|
+
* **Session Counter (`.rnex/.lint_trigger_counter`):** Machine-local state tracking session activity (gitignored).
|
|
217
|
+
* **Autonomous Lint Trigger (`.rnex/scripts/wiki-lint-trigger.sh`):** Session counter and maintenance alerts on session 1 and every 15 sessions.
|
|
218
|
+
* **Standardized Workflows (`.rnex/workflows/`):**
|
|
219
219
|
* `wiki-ingest.md`: 8-step protocol decomposing raw source documents into 5–25 atomic wiki pages.
|
|
220
220
|
* `wiki-lint.md`: 10-step protocol validating paths, recomputing `mentioned_in`, removing orphans, resolving contradictions, identifying gaps, suggesting source candidates, and rebuilding indexes.
|
|
221
221
|
|
|
@@ -238,7 +238,8 @@ ai_files:
|
|
|
238
238
|
|
|
239
239
|
# Workspace plugins
|
|
240
240
|
plugins:
|
|
241
|
-
|
|
241
|
+
karpathy-llm:
|
|
242
|
+
lint_trigger_enabled: true
|
|
242
243
|
|
|
243
244
|
# Member repositories
|
|
244
245
|
repos:
|
package/docs/rnex.example.yaml
CHANGED
|
@@ -71,10 +71,11 @@ ai_files:
|
|
|
71
71
|
# karpathy-llm — Andrej Karpathy's agent behavioral principles,
|
|
72
72
|
# multi-repo context engineering, and LLM Wiki pattern
|
|
73
73
|
#
|
|
74
|
-
# Local / custom plugins can also be placed in .
|
|
74
|
+
# Local / custom plugins can also be placed in .rnex/plugins/<name>/
|
|
75
75
|
|
|
76
76
|
plugins:
|
|
77
|
-
#
|
|
77
|
+
# karpathy-llm:
|
|
78
|
+
# lint_trigger_enabled: true
|
|
78
79
|
|
|
79
80
|
# ------------------------------------------------------------------------------
|
|
80
81
|
# repos — Member repositories managed by Repo Nexus
|
package/package.json
CHANGED
package/rnex
CHANGED
|
@@ -171,17 +171,60 @@ yaml_list_ai_files() {
|
|
|
171
171
|
'
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
# Parse list of plugins from rnex.yaml
|
|
174
|
+
# Parse list of plugins from rnex.yaml (supports both mapping and list formats)
|
|
175
175
|
yaml_list_plugins() {
|
|
176
176
|
[ -f "$WORKSPACE_YAML" ] || return 0
|
|
177
177
|
awk '
|
|
178
|
-
/^plugins
|
|
178
|
+
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ { p=1; next }
|
|
179
179
|
p && /^[^ #]/ { exit }
|
|
180
180
|
p && /^[ ]*-[ ]*/ {
|
|
181
|
-
|
|
182
|
-
sub(
|
|
183
|
-
|
|
181
|
+
line = $0
|
|
182
|
+
sub(/^[ ]*-[ ]*/, "", line)
|
|
183
|
+
sub(/[ ]*#.*/, "", line)
|
|
184
|
+
sub(/[ ]*:.*$/, "", line)
|
|
185
|
+
gsub(/[[:space:]]/, "", line)
|
|
186
|
+
if (length(line) > 0) print line
|
|
187
|
+
next
|
|
188
|
+
}
|
|
189
|
+
p && /^ [a-zA-Z0-9_.-]+:[ ]*(#.*)?$/ {
|
|
190
|
+
line = $0
|
|
191
|
+
sub(/^[ ]*/, "", line)
|
|
192
|
+
sub(/:.*/, "", line)
|
|
193
|
+
gsub(/[[:space:]]/, "", line)
|
|
194
|
+
if (length(line) > 0) print line
|
|
195
|
+
next
|
|
196
|
+
}
|
|
197
|
+
p && /^ [a-zA-Z0-9_.-]+:[ ]+[^#[:space:]]/ {
|
|
198
|
+
line = $0
|
|
199
|
+
sub(/^[ ]*/, "", line)
|
|
200
|
+
sub(/:.*/, "", line)
|
|
201
|
+
gsub(/[[:space:]]/, "", line)
|
|
202
|
+
if (length(line) > 0) print line
|
|
203
|
+
next
|
|
204
|
+
}
|
|
205
|
+
' "$WORKSPACE_YAML"
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
# Get a configuration field value for a plugin under plugins.<plugin>.<field>
|
|
209
|
+
yaml_plugin_get() {
|
|
210
|
+
_plugin="$1"; _field="$2"
|
|
211
|
+
[ -f "$WORKSPACE_YAML" ] || return 0
|
|
212
|
+
awk -v plugin="$_plugin" -v field="$_field" '
|
|
213
|
+
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ { in_plugins=1; next }
|
|
214
|
+
in_plugins && /^[^ #]/ { in_plugins=0 }
|
|
215
|
+
in_plugins && match($0, "^ " plugin ":[ ]*") { in_target=1; next }
|
|
216
|
+
in_target && /^ / {
|
|
217
|
+
line = $0
|
|
218
|
+
sub(/^[ ]*/, "", line)
|
|
219
|
+
if (match(line, "^" field ":[ ]*")) {
|
|
220
|
+
sub("^" field ":[ ]*", "", line)
|
|
221
|
+
sub(/[ ]*#.*$/, "", line)
|
|
222
|
+
gsub(/^["\x27]|["\x27]$/, "", line)
|
|
223
|
+
print line
|
|
224
|
+
exit
|
|
225
|
+
}
|
|
184
226
|
}
|
|
227
|
+
in_target && !/^ / && !/^[ ]*#/ { in_target=0 }
|
|
185
228
|
' "$WORKSPACE_YAML"
|
|
186
229
|
}
|
|
187
230
|
|
|
@@ -196,28 +239,44 @@ yaml_enable_plugin() {
|
|
|
196
239
|
printf '\nplugins:\n' >> "$WORKSPACE_YAML"
|
|
197
240
|
fi
|
|
198
241
|
_tmp="$(mktemp)"
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
242
|
+
if [ "$_name" = "karpathy-llm" ]; then
|
|
243
|
+
awk -v name="$_name" '
|
|
244
|
+
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ {
|
|
245
|
+
print
|
|
246
|
+
printf " %s:\n lint_trigger_enabled: true\n", name
|
|
247
|
+
added=1
|
|
248
|
+
next
|
|
249
|
+
}
|
|
250
|
+
{ print }
|
|
251
|
+
' "$WORKSPACE_YAML" > "$_tmp" && mv "$_tmp" "$WORKSPACE_YAML"
|
|
252
|
+
else
|
|
253
|
+
awk -v name="$_name" '
|
|
254
|
+
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ {
|
|
255
|
+
print
|
|
256
|
+
printf " %s: {}\n", name
|
|
257
|
+
added=1
|
|
258
|
+
next
|
|
259
|
+
}
|
|
260
|
+
{ print }
|
|
261
|
+
' "$WORKSPACE_YAML" > "$_tmp" && mv "$_tmp" "$WORKSPACE_YAML"
|
|
262
|
+
fi
|
|
208
263
|
}
|
|
209
264
|
|
|
210
265
|
yaml_disable_plugin() {
|
|
211
266
|
_name="$1"
|
|
212
267
|
_tmp="$(mktemp)"
|
|
213
268
|
awk -v name="$_name" '
|
|
214
|
-
/^plugins
|
|
269
|
+
/^plugins:[ ]*$/ || /^plugins:[ ]*#/ { in_plugins=1; print; next }
|
|
215
270
|
in_plugins && /^[^ #]/ { in_plugins=0 }
|
|
271
|
+
in_plugins && match($0, "^ " name ":[ ]*") { in_target=1; next }
|
|
272
|
+
in_target && (/^ / || /^[ ]*$/) { next }
|
|
273
|
+
in_target && !/^ / { in_target=0 }
|
|
216
274
|
in_plugins && $0 ~ ("^[ ]*-[ ]*" name "[ ]*($|#)") { next }
|
|
217
275
|
{ print }
|
|
218
276
|
' "$WORKSPACE_YAML" > "$_tmp" && mv "$_tmp" "$WORKSPACE_YAML"
|
|
219
277
|
}
|
|
220
278
|
|
|
279
|
+
|
|
221
280
|
# Parse list of repos from rnex.yaml
|
|
222
281
|
yaml_list_repos() {
|
|
223
282
|
[ -f "$WORKSPACE_YAML" ] || return 0
|
|
@@ -461,6 +520,7 @@ find_plugin_dir() {
|
|
|
461
520
|
_query="$1"
|
|
462
521
|
_sdir="$(dirname "$SCRIPT_LOCATION")"
|
|
463
522
|
for _cand in \
|
|
523
|
+
"$NEXUS_DIR/.rnex/plugins/$_query" \
|
|
464
524
|
"$NEXUS_DIR/.nexus/plugins/$_query" \
|
|
465
525
|
"$NEXUS_DIR/plugins/$_query" \
|
|
466
526
|
"$NEXUS_DIR/toolkit/plugins/$_query" \
|
|
@@ -479,6 +539,7 @@ list_all_available_plugin_dirs() {
|
|
|
479
539
|
for _parent in \
|
|
480
540
|
"$_sdir/toolkit/plugins" \
|
|
481
541
|
"$NEXUS_DIR/toolkit/plugins" \
|
|
542
|
+
"$NEXUS_DIR/.rnex/plugins" \
|
|
482
543
|
"$NEXUS_DIR/.nexus/plugins" \
|
|
483
544
|
"$NEXUS_DIR/plugins"; do
|
|
484
545
|
if [ -d "$_parent" ]; then
|
|
@@ -599,6 +660,16 @@ sync_plugins() {
|
|
|
599
660
|
log_ok "Initialized template: $_d"
|
|
600
661
|
fi
|
|
601
662
|
done
|
|
663
|
+
|
|
664
|
+
# Reconcile plugin configuration (e.g., lint_trigger_enabled for karpathy-llm)
|
|
665
|
+
if [ "$_pname" = "karpathy-llm" ] && [ -f "$NEXUS_DIR/wiki/index.md" ]; then
|
|
666
|
+
_lte="$(yaml_plugin_get "karpathy-llm" "lint_trigger_enabled")"
|
|
667
|
+
if [ "$_lte" = "false" ]; then
|
|
668
|
+
sed -i.bak 's/lint_trigger:[ ]*enabled/lint_trigger: disabled/' "$NEXUS_DIR/wiki/index.md" 2>/dev/null && rm -f "$NEXUS_DIR/wiki/index.md.bak"
|
|
669
|
+
elif [ "$_lte" = "true" ]; then
|
|
670
|
+
sed -i.bak 's/lint_trigger:[ ]*disabled/lint_trigger: enabled/' "$NEXUS_DIR/wiki/index.md" 2>/dev/null && rm -f "$NEXUS_DIR/wiki/index.md.bak"
|
|
671
|
+
fi
|
|
672
|
+
fi
|
|
602
673
|
done
|
|
603
674
|
}
|
|
604
675
|
|
|
@@ -1018,6 +1089,12 @@ cmd_plugin_info() {
|
|
|
1018
1089
|
[ -n "$_author" ] && printf '%bAuthor:%b %s\n' "$_BOLD" "$_NC" "$_author"
|
|
1019
1090
|
[ -n "$_home" ] && printf '%bHomepage:%b %s\n' "$_BOLD" "$_NC" "$_home"
|
|
1020
1091
|
printf '%bLocation:%b %s\n' "$_BOLD" "$_NC" "$_pdir"
|
|
1092
|
+
if yaml_has_plugin "$_name"; then
|
|
1093
|
+
_lte="$(yaml_plugin_get "$_name" "lint_trigger_enabled")"
|
|
1094
|
+
if [ -n "$_lte" ]; then
|
|
1095
|
+
printf '%bConfiguration:%b lint_trigger_enabled: %s\n' "$_BOLD" "$_NC" "$_lte"
|
|
1096
|
+
fi
|
|
1097
|
+
fi
|
|
1021
1098
|
|
|
1022
1099
|
printf '\n%bProvided AI Context Files:%b\n' "$_BOLD" "$_NC"
|
|
1023
1100
|
plugin_list_ai_files "$_pdir" | while read -r _item; do
|
|
@@ -1102,12 +1179,12 @@ cmd_plugin_enable() {
|
|
|
1102
1179
|
fi
|
|
1103
1180
|
done
|
|
1104
1181
|
|
|
1105
|
-
# Ensure machine-local state files (like
|
|
1182
|
+
# Ensure machine-local state files (like .rnex/.lint_trigger_counter) are gitignored
|
|
1106
1183
|
_gi="$NEXUS_DIR/.gitignore"
|
|
1107
|
-
if [ -f "$NEXUS_DIR/scripts/wiki-lint-trigger.sh" ]; then
|
|
1108
|
-
if [ ! -f "$_gi" ] || ! grep -qF "
|
|
1109
|
-
printf '\n#
|
|
1110
|
-
log_dim "Added '
|
|
1184
|
+
if [ -f "$NEXUS_DIR/.rnex/scripts/wiki-lint-trigger.sh" ] || [ -f "$NEXUS_DIR/scripts/wiki-lint-trigger.sh" ]; then
|
|
1185
|
+
if [ ! -f "$_gi" ] || ! grep -qF ".rnex/.lint_trigger_counter" "$_gi" 2>/dev/null; then
|
|
1186
|
+
printf '\n# Repo Nexus internal state\n.rnex/.lint_trigger_counter\nwiki/.lint_trigger_counter\n.lint_trigger_counter\n' >> "$_gi"
|
|
1187
|
+
log_dim "Added '.rnex/.lint_trigger_counter' to .gitignore"
|
|
1111
1188
|
fi
|
|
1112
1189
|
fi
|
|
1113
1190
|
|
|
@@ -85,18 +85,20 @@ my-workspace/
|
|
|
85
85
|
├── wiki/
|
|
86
86
|
│ ├── index.md # Master catalog + lint_trigger toggle
|
|
87
87
|
│ ├── hot.md # Rolling ~500-word quick-orient context
|
|
88
|
-
│
|
|
88
|
+
│ └── _log.md # Ingestion & lint audit history
|
|
89
|
+
├── .rnex/
|
|
90
|
+
│ ├── rules/
|
|
91
|
+
│ │ └── KARPATHY_RULES.md # Cardinal principles & wiki rules (auto-symlinked)
|
|
92
|
+
│ ├── workflows/
|
|
93
|
+
│ │ ├── wiki-ingest.md # 8-step decomposition & ingestion workflow
|
|
94
|
+
│ │ └── wiki-lint.md # 10-step graph validation & maintenance workflow
|
|
95
|
+
│ ├── scripts/
|
|
96
|
+
│ │ └── wiki-lint-trigger.sh # Executable session counter & lint alert
|
|
97
|
+
│ ├── templates/
|
|
98
|
+
│ │ ├── wiki-page.template.md # Atomic page template with typed relations
|
|
99
|
+
│ │ └── LLM_WIKI.sample.md # Sample wiki walkthrough
|
|
89
100
|
│ └── .lint_trigger_counter # Session counter (gitignored)
|
|
90
|
-
|
|
91
|
-
│ └── wiki-lint-trigger.sh # Executable session counter & lint alert
|
|
92
|
-
├── .agents/rules/
|
|
93
|
-
│ └── KARPATHY_RULES.md # Cardinal principles & wiki rules (auto-symlinked)
|
|
94
|
-
├── .agent/workflows/
|
|
95
|
-
│ ├── wiki-ingest.md # 8-step decomposition & ingestion workflow
|
|
96
|
-
│ └── wiki-lint.md # 10-step graph validation & maintenance workflow
|
|
97
|
-
└── docs/
|
|
98
|
-
├── wiki-page.template.md # Atomic page template with typed relations
|
|
99
|
-
└── LLM_WIKI.sample.md # Sample wiki walkthrough
|
|
101
|
+
└── rnex.yaml # Plugin configuration
|
|
100
102
|
```
|
|
101
103
|
|
|
102
104
|
---
|
|
@@ -110,19 +112,20 @@ rnex plugin enable karpathy-llm
|
|
|
110
112
|
```
|
|
111
113
|
|
|
112
114
|
This command:
|
|
113
|
-
1. Adds `karpathy-llm` to `plugins:` in `rnex.yaml
|
|
114
|
-
2. Copies initial templates (`wiki/index.md`, `wiki/_log.md`, `wiki/hot.md`, `raw/.gitkeep`,
|
|
115
|
-
3. Links `KARPATHY_RULES.md` and workflows into
|
|
116
|
-
4. Ensures
|
|
115
|
+
1. Adds `karpathy-llm` to `plugins:` in `rnex.yaml` with default configuration (`lint_trigger_enabled: true`).
|
|
116
|
+
2. Copies initial templates (`wiki/index.md`, `wiki/_log.md`, `wiki/hot.md`, `raw/.gitkeep`, `.rnex/templates/wiki-page.template.md`, `.rnex/templates/LLM_WIKI.sample.md`, `.rnex/scripts/wiki-lint-trigger.sh`).
|
|
117
|
+
3. Links `KARPATHY_RULES.md` and workflows into `.rnex/rules/` and `.rnex/workflows/`.
|
|
118
|
+
4. Ensures `.rnex/.lint_trigger_counter` is added to `.gitignore`.
|
|
117
119
|
5. Syncs scope links and AI context files across all registered member repositories via `rnex sync`.
|
|
118
120
|
|
|
119
121
|
### Option 2: Declarative in `rnex.yaml`
|
|
120
122
|
|
|
121
|
-
|
|
123
|
+
Configure `karpathy-llm` under `plugins:` in `rnex.yaml`:
|
|
122
124
|
|
|
123
125
|
```yaml
|
|
124
126
|
plugins:
|
|
125
|
-
|
|
127
|
+
karpathy-llm:
|
|
128
|
+
lint_trigger_enabled: true
|
|
126
129
|
```
|
|
127
130
|
|
|
128
131
|
Then synchronize:
|
|
@@ -137,7 +140,7 @@ rnex sync
|
|
|
137
140
|
|
|
138
141
|
1. **Intake:** Drop raw research papers, meeting notes, PRDs, or architecture specs into `/raw/` unmodified.
|
|
139
142
|
2. **Ingest:** Instruct your AI assistant: *"Run wiki-ingest on raw/source-document.md"*.
|
|
140
|
-
3. **Session Cadence:** After sessions where repository files were edited, run
|
|
143
|
+
3. **Session Cadence:** After sessions where repository files were edited, run `.rnex/scripts/wiki-lint-trigger.sh`.
|
|
141
144
|
4. **Maintenance:** If prompted by `[WIKI MAINTENANCE DUE]`, instruct the assistant: *"Run wiki-lint"*.
|
|
142
145
|
5. **Toggle Automation:** Edit `lint_trigger: enabled` or `lint_trigger: disabled` in `/wiki/index.md` anytime.
|
|
143
146
|
|
|
@@ -4,14 +4,14 @@ description: Andrej Karpathy's agent behavioral principles, context engineering
|
|
|
4
4
|
author: nu-nenoi
|
|
5
5
|
homepage: https://github.com/nu-nenoi/repo-nexus
|
|
6
6
|
ai_files:
|
|
7
|
-
- rules/KARPATHY_RULES.md: .
|
|
8
|
-
- workflows/wiki-ingest.md: .
|
|
9
|
-
- workflows/wiki-lint.md: .
|
|
7
|
+
- rules/KARPATHY_RULES.md: .rnex/rules/KARPATHY_RULES.md
|
|
8
|
+
- workflows/wiki-ingest.md: .rnex/workflows/wiki-ingest.md
|
|
9
|
+
- workflows/wiki-lint.md: .rnex/workflows/wiki-lint.md
|
|
10
10
|
templates:
|
|
11
11
|
- templates/index.md: wiki/index.md
|
|
12
12
|
- templates/_log.md: wiki/_log.md
|
|
13
13
|
- templates/hot.md: wiki/hot.md
|
|
14
14
|
- templates/raw.gitkeep: raw/.gitkeep
|
|
15
|
-
- templates/wiki-page.sample.md:
|
|
16
|
-
- templates/LLM_WIKI.sample.md:
|
|
17
|
-
- scripts/wiki-lint-trigger.sh: scripts/wiki-lint-trigger.sh
|
|
15
|
+
- templates/wiki-page.sample.md: .rnex/templates/wiki-page.template.md
|
|
16
|
+
- templates/LLM_WIKI.sample.md: .rnex/templates/LLM_WIKI.sample.md
|
|
17
|
+
- scripts/wiki-lint-trigger.sh: .rnex/scripts/wiki-lint-trigger.sh
|
|
@@ -54,10 +54,10 @@ When working in a repository with an active Karpathy LLM Wiki (`/wiki/` and `/ra
|
|
|
54
54
|
|
|
55
55
|
- **Intake**: All source material (articles, transcripts, docs, notes) goes to `/raw/` unmodified. Never write directly to `/wiki/` without ingesting.
|
|
56
56
|
- **Orientation**: Before answering domain questions, read `/wiki/index.md` to find relevant pages, then read only those pages. If `hot.md` exists, read it first as a quick-orient step.
|
|
57
|
-
- **Ingestion**: When files appear in `/raw/`, run the `wiki-ingest` workflow (`.
|
|
58
|
-
- **Cadence**: After any session where repository files were created, edited, or deleted, run
|
|
57
|
+
- **Ingestion**: When files appear in `/raw/`, run the `wiki-ingest` workflow (`.rnex/workflows/wiki-ingest.md`). One source document typically produces many atomic pages (commonly 5–25 pages) — do not collapse a source into a single file.
|
|
58
|
+
- **Cadence**: After any session where repository files were created, edited, or deleted, run `.rnex/scripts/wiki-lint-trigger.sh`. If it outputs `[WIKI MAINTENANCE DUE]`, run the `wiki-lint` workflow (`.rnex/workflows/wiki-lint.md`) before stopping.
|
|
59
59
|
- **No-op sessions**: Do not run the trigger after read-only or purely conversational sessions where no files changed.
|
|
60
|
-
- **Enable/disable**: Wiki automation is controlled by `lint_trigger: enabled|disabled` in `/wiki/index.md` frontmatter. Edit
|
|
60
|
+
- **Enable/disable**: Wiki automation is controlled by `lint_trigger_enabled: true|false` in `rnex.yaml` (and `lint_trigger: enabled|disabled` in `/wiki/index.md` frontmatter). Edit either field to toggle.
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
# ============================================================================
|
|
3
|
-
# scripts/wiki-lint-trigger.sh — Autonomous Karpathy Wiki Lint Trigger
|
|
3
|
+
# .rnex/scripts/wiki-lint-trigger.sh — Autonomous Karpathy Wiki Lint Trigger
|
|
4
4
|
# ============================================================================
|
|
5
|
-
|
|
6
|
-
#
|
|
5
|
+
|
|
6
|
+
# 1. Check rnex.yaml configuration if present
|
|
7
|
+
if [ -f "rnex.yaml" ]; then
|
|
8
|
+
_disabled=$(awk '
|
|
9
|
+
/^plugins:/ { in_p=1; next }
|
|
10
|
+
in_p && /^[^ #]/ { exit }
|
|
11
|
+
in_p && /^ karpathy-llm:[ ]*$/ { in_k=1; next }
|
|
12
|
+
in_k && /^ lint_trigger_enabled:[ ]*false/ { print "yes"; exit }
|
|
13
|
+
in_k && !/^ / && !/^[ ]*#/ { in_k=0 }
|
|
14
|
+
' rnex.yaml)
|
|
15
|
+
if [ "$_disabled" = "yes" ]; then
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
# 2. Check if wiki/index.md exists and contains lint_trigger: enabled
|
|
7
21
|
grep -q "lint_trigger: enabled" wiki/index.md 2>/dev/null || exit 0
|
|
8
22
|
|
|
9
|
-
|
|
10
|
-
|
|
23
|
+
COUNTER_DIR=".rnex"
|
|
24
|
+
[ -d "$COUNTER_DIR" ] || COUNTER_DIR="wiki"
|
|
25
|
+
COUNTER_FILE="$COUNTER_DIR/.lint_trigger_counter"
|
|
11
26
|
|
|
12
27
|
# Read and increment session counter
|
|
13
28
|
count=0
|