Loading...
Loading...
Interact with the SlipBox semantic knowledge engine and read notes from PrivateBox. Use when capturing ideas, searching notes, browsing your knowledge graph, or running semantic analysis passes (link, cluster, tension).
npx skill4agent add randroids-dojo/skills slipboxIMPORTANT: Before doing anything else, run the setup check below. Do not skip this step.
echo "SLIPBOX_API_KEY: ${SLIPBOX_API_KEY:+${SLIPBOX_API_KEY:0:6}…(set)}" | sed 's/^SLIPBOX_API_KEY: $/SLIPBOX_API_KEY: (MISSING)/'
echo "SLIPBOX_URL: ${SLIPBOX_URL:-(MISSING)}"
echo "SLIPBOX_PRIVATEBOX_REPO: ${SLIPBOX_PRIVATEBOX_REPO:-(MISSING)}"(MISSING)~/.zshrc~/.zprofilecurl -sL "$SLIPBOX_URL/api/health"
# {"status":"ok"}{"status":"ok"}"error"$SLIPBOX_URL$SLIPBOX_PRIVATEBOX_REPOSLIPBOX_API_KEY=<shared-secret> # Bearer token for API auth
SLIPBOX_URL=https://slip-box-rho.vercel.app # SlipBox service base URL
SLIPBOX_PRIVATEBOX_REPO=Randroids-Dojo/PrivateBox # GitHub repo for notes (owner/repo)Authorization: Bearer $SLIPBOX_API_KEY# Health check
curl -sL "$SLIPBOX_URL/api/health"
# Add a note
curl -sL -X POST "$SLIPBOX_URL/api/add-note" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Atomic idea goes here."}'
# Add a typed note (type: "meta" or "hypothesis")
curl -sL -X POST "$SLIPBOX_URL/api/add-note" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "## Cluster: ...", "type": "meta"}'
# Re-link all notes (recompute similarity links)
curl -sL -X POST "$SLIPBOX_URL/api/link-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"
# Cluster notes into thematic groups
curl -sL -X POST "$SLIPBOX_URL/api/cluster-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"k": 5}'
# Detect conceptual tensions (contradictions within clusters)
curl -sL -X POST "$SLIPBOX_URL/api/tension-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"
# Fetch theme data (clusters + note content + tensions) for agent synthesis
curl -sL "$SLIPBOX_URL/api/theme-data" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"type"meta""hypothesis"# Regular note
curl -sL -X POST "$SLIPBOX_URL/api/add-note" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "The Zettelkasten method treats each note as a discrete, reusable idea."
}'
# Meta-note (cluster synthesis)
curl -sL -X POST "$SLIPBOX_URL/api/add-note" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "## Cluster: Agentic Systems\n\nNotes in this cluster explore...",
"type": "meta"
}'{
"noteId": "20260222T153045-a1b2c3d4",
"type": "meta",
"linkedNotes": [
{"noteId": "20260110T091200-b2c3d4e5", "similarity": 0.91},
{"noteId": "20260115T143000-c3d4e5f6", "similarity": 0.85}
]
}typenullcurl -sL -X POST "$SLIPBOX_URL/api/link-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"{"message": "Link pass complete", "notesProcessed": 42, "totalLinks": 156}kcurl -sL -X POST "$SLIPBOX_URL/api/cluster-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"k": 5}'{
"message": "Cluster pass complete",
"noteCount": 42,
"clusterCount": 5,
"clusters": [{"id": "cluster-0", "size": 9, "noteIds": ["20260222T153045-a1b2c3d4", ...]}, ...]
}curl -sL -X POST "$SLIPBOX_URL/api/tension-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"{
"message": "Tension pass complete",
"noteCount": 42,
"clusterCount": 5,
"tensionCount": 8,
"tensions": [{"id": "tension-0", "noteA": "...", "noteB": "...", "similarity": 0.68, "clusterId": "cluster-0"}, ...]
}/api/add-notecluster-passcurl -sL "$SLIPBOX_URL/api/theme-data" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"{
"clusters": [
{
"id": "cluster-0",
"noteIds": ["20260222T153045-a1b2c3d4", "20260110T091200-b2c3d4e5"],
"notes": {
"20260222T153045-a1b2c3d4": {"title": "Optional title", "body": "Atomic idea content."},
"20260110T091200-b2c3d4e5": {"body": "Another idea."}
}
}
],
"tensions": [
{"id": "tension-0", "noteA": "20260222T153045-a1b2c3d4", "noteB": "20260110T091200-b2c3d4e5", "similarity": 0.65, "clusterId": "cluster-0"}
],
"clusterCount": 1,
"noteCount": 2,
"tensionCount": 1,
"computedAt": "2026-02-23T01:33:00.000Z"
}{ "message": "No clusters found. Run cluster-pass first.", "clusters": [], ... }---
id: 20260222T153045-a1b2c3d4
title: "Optional title"
type: meta
tags: ["tag1", "tag2"]
source: "URL or origin"
created: 2026-02-22T15:30:45.000Z
updated: 2026-02-22T15:30:45.000Z
links:
- target: 20260110T091200-b2c3d4e5
similarity: 0.91
- target: 20260115T143000-c3d4e5f6
similarity: 0.85
---
Atomic idea content in Markdown.typemetahypothesisYYYYMMDDTHHMMSS-<8hex>index/index/embeddings.jsonindex/backlinks.jsonindex/clusters.jsonindex/tensions.jsongh# List all notes
gh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/notes" \
--jq '.[].name'
# Read a specific note by ID
gh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/notes/20260222T153045-a1b2c3d4.md" \
--jq '.content' | base64 -d
# Read the backlinks index
gh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/index/backlinks.json" \
--jq '.content' | base64 -d | jq '.'
# Read the clusters index
gh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/index/clusters.json" \
--jq '.content' | base64 -d | jq '.'
# Read the tensions index
gh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/index/tensions.json" \
--jq '.content' | base64 -d | jq '.'# Search PrivateBox notes for a keyword (uses GitHub code search)
gh api "search/code?q=<keyword>+repo:$SLIPBOX_PRIVATEBOX_REPO+path:notes" \
--jq '.items[].path'
# Or clone locally for fast full-text search
gh repo clone "$SLIPBOX_PRIVATEBOX_REPO" /tmp/privatebox
grep -r "keyword" /tmp/privatebox/notes/ --include="*.md" -lgh api "search/code?q=tags+keyword+repo:$SLIPBOX_PRIVATEBOX_REPO+path:notes" \
--jq '.items[].path'/api/add-notenoteIdlinkedNotes/api/link-passgh api "repos/$SLIPBOX_PRIVATEBOX_REPO/contents/notes"linksGET /api/theme-data/api/add-note# 1. Fetch theme data
curl -sL "$SLIPBOX_URL/api/theme-data" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"
# 2. For each cluster, synthesize a meta-note and POST it back with type "meta"
curl -sL -X POST "$SLIPBOX_URL/api/add-note" \
-H "Authorization: Bearer $SLIPBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "## Cluster: Agentic Systems\n\nNotes in this cluster explore...",
"type": "meta"
}'type: meta# Step 1: Recompute links
curl -sL -X POST "$SLIPBOX_URL/api/link-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"
# Step 2: Recluster
curl -sL -X POST "$SLIPBOX_URL/api/cluster-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"
# Step 3: Detect tensions
curl -sL -X POST "$SLIPBOX_URL/api/tension-pass" \
-H "Authorization: Bearer $SLIPBOX_API_KEY"