Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Update old notes with new connections. The backward pass that /reflect doesn't do. Revisit existing notes that predate newer related content, add connections, sharpen claims, consider splits. Triggers on "/reweave", "/reweave [note]", "update old notes", "backward connections", "revisit notes".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 241% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 216% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 365% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 577% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 301% | 0% |
Read these files to configure domain-specific behavior:
ops/derivation-manifest.md — vocabulary mapping, platform hintsvocabulary.notes for the notes folder namevocabulary.note / vocabulary.note_plural for note type referencesvocabulary.reweave for the process verb in outputvocabulary.topic_map / vocabulary.topic_map_plural for MOC referencesvocabulary.cmd_verify for the next-phase suggestionops/config.yaml — processing depth, pipeline chainingprocessing.depth: deep | standard | quickprocessing.chaining: manual | suggested | automaticprocessing.reweave.scope: related | broad | fullIf these files don't exist, use universal defaults.
Processing depth adaptation:
| Depth | Reweave Behavior | |-------|-----------------| | deep | Full reconsideration. Search extensively for newer related {vocabulary.note_plural}. Consider splits, rewrites, challenges. Evaluate claim sharpening. Multiple search passes. | | standard | Balanced review. Search semantic neighbors and same-{vocabulary.topic_map} {vocabulary.note_plural}. Add connections, sharpen if needed. | | quick | Minimal backward pass. Add obvious connections only. No rewrites or splits. |
Reweave scope:
| Scope | Behavior | |-------|----------| | related | Search {vocabulary.note_plural} directly related to the target (same {vocabulary.topic_map}, semantic neighbors) | | broad | Search across all {vocabulary.topic_map_plural} and semantic space for potential connections | | full | Complete review including potential splits, rewrites, and claim challenges |
Target: $ARGUMENTS
Parse immediately:
[[note name]] or note name: reweave that specific {vocabulary.note}--handoff: output RALPH HANDOFF block at endExecute these steps:
--handoff in target: output RALPH HANDOFF blockSTART NOW. Reference below explains methodology — use to guide, not as output.
Revisit old {vocabulary.note_plural} with everything you know today. {vocabulary.note_plural} are living documents — they grow, get rewritten, split apart, sharpen their claims. This is the backward pass that keeps the network alive.
{vocabulary.note_plural} are living documents, not finished artifacts.
A {vocabulary.note} written last month was written with last month's understanding. Since then:
Reweaving is not just "add backward links." It is completely reconsidering the {vocabulary.note} based on current knowledge. Ask: "If I wrote this {vocabulary.note} today, what would be different?"
> "The {vocabulary.note} you wrote yesterday is a hypothesis. Today's knowledge is the test."
| Action | When to Do It | |--------|---------------| | Add connections | Newer {vocabulary.note_plural} exist that should link here | | Rewrite content | Understanding evolved, prose should reflect it | | Sharpen the claim | Title is too vague to be useful | | Split the {vocabulary.note} | Multiple claims bundled together | | Challenge the claim | New evidence contradicts the original | | Improve the description | Better framing emerged | | Update examples | Better illustrations exist now |
Reweaving is NOT just Phase 4 of /reflect applied backward. It is a full reconsideration.
Fully reconsider a specific {vocabulary.note} against current knowledge.
Scan for candidates needing reweaving, present ranked list.
Process {vocabulary.note_plural} flagged as sparse by /health.
Reweave all {vocabulary.note_plural} not updated in N days.
How to find candidates:
bash# Find notes not modified in 30 days find {vocabulary.notes}/ -name "*.md" -mtime +30 -type f
External loop mode for /ralph:
Read the target {vocabulary.note} completely. Understand:
Also read the task file if one exists (pipeline execution). The task file's Reflect section shows:
This context prevents redundant work — you know what /reflect already found, so you can focus on what it missed or what needs deeper reconsideration.
Use the same dual discovery pattern as /reflect — {vocabulary.topic_map} exploration AND semantic search in parallel.
Path 1: {vocabulary.topic_map} Exploration — curated navigation
From the {vocabulary.note}'s Topics footer, identify which {vocabulary.topic_map}(s) it belongs to:
Path 2: Semantic Search — find what {vocabulary.topic_map_plural} might miss
Three-tier fallback for semantic search:
Tier 1 — MCP tools (preferred): Use mcp__qmd__deep_search (hybrid search with expansion + reranking):
Tier 2 — bash qmd with lock serialization: If MCP tools fail or are unavailable:
bashLOCKDIR="ops/queue/.locks/qmd.lock" while ! mkdir "$LOCKDIR" 2>/dev/null; do sleep 2; done qmd query "[note's core concepts]" --collection {vocabulary.notes_collection} --limit 15 2>/dev/null rm -rf "$LOCKDIR"
The lock prevents multiple parallel workers from loading large models simultaneously.
Tier 3 — grep only: If both MCP and bash fail, log "qmd unavailable, grep-only discovery" and rely on {vocabulary.topic_map} + keyword search only. This degrades quality but does not block work.
Evaluate results by relevance — read any result where title or snippet suggests genuine connection.
Also check:
bashgrep -rl '\[\[target note title\]\]' {vocabulary.notes}/ --include="*.md"
Key question: What do I know today that I did not know when this {vocabulary.note} was written?
Does the original claim still hold?
| Finding | Action | |---------|--------| | Claim holds, evidence strengthened | Add supporting connections | | Claim holds but framing is weak | Rewrite for clarity | | Claim is too vague | Sharpen to be more specific | | Claim is too broad | Split into focused {vocabulary.note_plural} | | Claim is partially wrong | Revise with nuance | | Claim is contradicted | Flag tension, propose revision |
The Sharpening Test:
Read the title. Ask: could someone disagree with this specific claim?
Example:
The Split Test:
Does this {vocabulary.note} make multiple claims that could stand alone?
Backward connections (what this {vocabulary.note} should reference):
For each newer {vocabulary.note}, ask:
Forward connections (what should reference this {vocabulary.note}):
Check newer {vocabulary.note_plural} that SHOULD link here but do not:
Agent Traversal Check (apply to all connections):
Ask: "If an agent follows this link during traversal, what decision or understanding does it enable?"
Connections exist to serve agent navigation. Adding a link because content is "related" without operational value creates noise. Every backward or forward connection should answer:
Reject connections that are merely "interesting" without agent utility.
Articulation requirement:
Every new connection must articulate WHY:
Never: "related" or "see also"
For pipeline execution (--handoff mode): Apply changes directly. The pipeline needs to proceed without waiting for approval.
For interactive execution (no --handoff): Present the reweave proposal first, then apply after approval.
Reweave proposal format (interactive only):
markdown## Reweave Proposal: [[target note]] **Last modified:** YYYY-MM-DD **Current knowledge evaluated:** N newer {vocabulary.note_plural}, M backlinks ### Claim Assessment [Does the claim hold? Need sharpening? Splitting? Revision?] ### Proposed Changes **1. [change type]: [description]** Current: > [existing text] Proposed: > [new text] Rationale: [why this change] **2. [change type]: [description]** ... ### Connections to Add - [[newer note A]] — [relationship]: [specific reason] - [[newer note B]] — [relationship]: [specific reason] ### Connections to Verify (other {vocabulary.note_plural} should link here) - [[note X]] might benefit from referencing this because... ### Not Changing - [What was considered but rejected, and why] --- Apply these changes? (yes/no/modify)
When applying changes:
The simplest action. Newer {vocabulary.note_plural} exist that should be referenced.
Inline connections (preferred):
markdown# before The constraint shifts from capture to curation. # after The constraint shifts from capture to curation, and since [[throughput matters more than accumulation]], the question becomes who does the selecting.
Footer connections:
yamlrelevant_notes: - "[[newer note]] — extends this by adding temporal dimension"
Understanding evolved. The prose should reflect current thinking, not historical thinking.
When to rewrite:
How to rewrite:
Vague claims cannot be built on. Sharpen means making the claim more specific and arguable.
Sharpening patterns:
| Vague | Sharp | |-------|-------| | "X is important" | "X matters because Y, which enables Z" | | "consider doing X" | "X works when condition] because mechanism]" | | "there are tradeoffs" | "specific tradeoff]: gaining X costs Y" |
When sharpening, also update:
One {vocabulary.note} became multiple ideas over time. Splitting creates focused, composable pieces.
Split indicators:
Split process:
Example split:
Original: "knowledge systems need both structure and flexibility"
Splits:
When NOT to split:
New evidence contradicts the original. Do not silently "fix" — acknowledge the evolution.
Challenge patterns:
markdown# if partially wrong The original insight was [X]. However, [[newer evidence]] suggests [Y]. The refined claim is [Z]. # if tension exists This argues [X]. But [[contradicting note]] argues [Y]. The tension remains unresolved — possibly [X] applies in context A while [Y] applies in context B. # if significantly wrong This note originally claimed [X]. Based on [[evidence]], the claim is revised: [new claim].
Always log challenges: When a claim is challenged or revised, this is a significant event. Note it in the task file Reweave section with the original claim, the new evidence, and the revised position.
When processing a {vocabulary.note} that came through the enrichment pipeline, check the task file for post_enrich_action signals. These were surfaced by /enrich and need execution:
The enrich phase determined the {vocabulary.note}'s title is too vague after content integration.
post_enrich_detail for the recommended new titleThe enrich phase determined the {vocabulary.note} now covers multiple distinct claims.
post_enrich_detail for the split recommendationThe enrich phase determined this {vocabulary.note} substantially overlaps with another.
Do NOT auto-merge or auto-delete. This requires human judgment.
Every change must be articulable. "I am adding this because..." with a specific reason.
After changes, is the {vocabulary.note} better? More useful? More connected? More accurate?
If you cannot confidently say yes, do not make the change.
After changes, does the {vocabulary.note} still cohere as a single focused piece? Or did you accidentally make it broader?
Do the changes improve the network? More traversal paths? Better paths?
markdown## Reweave Complete: [[target note]] ### Changes Applied | Type | Description | |------|-------------| | connection | added [[note A]] inline, [[note B]] to footer | | rewrite | clarified reasoning in paragraph 2 | | sharpen | title unchanged, description updated | ### Claim Status [unchanged | sharpened | split | challenged] ### Network Effect - Outgoing links: 3 -> 5 - This {vocabulary.note} now bridges [[domain A]] and [[domain B]] ### Cascade Recommendations - [[related note]] might benefit from reweave (similar vintage) - {vocabulary.topic_map} [[topic]] should be updated to reflect changes ### Observations [Patterns noticed, insights for future]
Successful reweaving:
The test: if this {vocabulary.note} were written today with everything you know, would it be meaningfully different? If yes and you did not change it, reweaving failed.
Never:
Always:
{vocabulary.note_plural} written yesterday do not know about today. {vocabulary.note_plural} written with old understanding do not reflect new understanding. Without reweaving, the vault becomes a graveyard of outdated thinking that happens to be organized.
Reweaving is how knowledge stays alive. Not just connecting, but questioning, sharpening, splitting, rewriting. Every {vocabulary.note} is a hypothesis. Every reweave is a test.
The network compounds through evolution, not just accumulation.
When invoked with --handoff, output this structured format at the END of the session. This enables external loops (/ralph) to parse results and update the task queue.
Detection: Check if $ARGUMENTS contains --handoff. If yes, append this block after completing normal workflow.
Handoff format:
=== RALPH HANDOFF: {vocabulary.reweave} ===
Target: [[note name]]
Work Done:
- Older {vocabulary.note_plural} updated: N
- Claim status: unchanged | sharpened | challenged | split
- Network effect: M new traversal paths
Files Modified:
- {vocabulary.notes}/[older note 1].md (inline link added)
- {vocabulary.notes}/[older note 2].md (footer connection added)
- [task file path] ({vocabulary.reweave} section)
Learnings:
- [Friction]: [description] | NONE
- [Surprise]: [description] | NONE
- [Methodology]: [description] | NONE
- [Process gap]: [description] | NONE
Queue Updates:
- Advance phase: {vocabulary.reweave} -> {vocabulary.verify}
=== END HANDOFF ===When running in handoff mode via /ralph, the prompt includes the task file path. After completing the workflow, update the ## {vocabulary.reweave} section of that task file with:
Critical: The handoff block is OUTPUT, not a replacement for the workflow. Do the full reweave workflow first, update task file, then format results as handoff.
When running interactively (NOT via /ralph), YOU must advance the phase in the queue. /ralph handles this automatically, but interactive sessions do not.
After completing the workflow, advance the phase:
bash# get timestamp TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") # advance phase (current_phase -> next, append to completed_phases) # NEXT_PHASE is the phase after reweave in phase_order (i.e., verify) jq '(.tasks[] | select(.id=="TASK_ID")).current_phase = "{vocabulary.verify}" | (.tasks[] | select(.id=="TASK_ID")).completed_phases += ["{vocabulary.reweave}"]' \ ops/queue/queue.json > tmp.json && mv tmp.json ops/queue/queue.json
The handoff block's "Queue Updates" section is not just output — it is your own todo list when running interactively.
After reweaving completes, output the next step based on ops/config.yaml pipeline.chaining mode:
current_phase: "{vocabulary.verify}"The chaining output uses domain-native command names from the derivation manifest.
Other measured skills in the registry, with their headline benchmark lift.