skill-sources/reweave/SKILL.md
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".
npx skillsauth add agenticnotetaking/arscontexta reweaveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read these files to configure domain-specific behavior:
ops/derivation-manifest.md — vocabulary mapping, platform hints
vocabulary.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 chaining
processing.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:
# 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:
LOCKDIR="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:
grep -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):
## 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):
# 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:
relevant_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:
# 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?
## 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:
# 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.
tools
Apply plugin knowledge base updates to an existing generated system. Consults the Ars Contexta research graph for methodology improvements, proposes skill upgrades with research justification. Never auto-implements. Triggers on "/upgrade", "upgrade skills", "check for improvements", "update methodology".
documentation
Interactive walkthrough for new users. Learn by doing — each step creates real content in your vault. Three tracks (researcher, manager, personal) with a universal learning arc. Triggers on "/tutorial", "walk me through", "how do I use this".
testing
Scaffold a complete knowledge system. Detects platform, conducts conversation, derives configuration, generates everything. Validates against 15 kernel primitives. Triggers on "/setup", "/setup --advanced", "set up my knowledge system", "create my vault".
testing
Re-derive your knowledge system from first principles when structural drift accumulates. Analyzes dimension incoherence, vocabulary mismatch, boundary dissolution, and template divergence. Preserves all content while restructuring architecture.