mit einem Klick
upgrade
// Upgrade this wiki's scaffold files (CLAUDE.md, skills) to match the latest wikibones version from GitHub.
// Upgrade this wiki's scaffold files (CLAUDE.md, skills) to match the latest wikibones version from GitHub.
Sync local customizations between scaffold and sibling wiki instances โ either direction. For upstream updates from GitHub, use the upgrade skill instead.
Deep-propagate one or more ingested sources across the wiki โ update concept/entity/question pages, flag contradictions, create new pages where warranted. Optional step after ingest to ensure claims ripple through the full wiki.
Ingest a source into the wiki โ read it, create a source-summary page, propagate claims into concept/entity pages, update index and log.
| name | upgrade |
| description | Upgrade this wiki's scaffold files (CLAUDE.md, skills) to match the latest wikibones version from GitHub. |
Bring this wiki's scaffold files up to date with the latest wikibones release.
The file .claude/scaffold-version records either a created:YYYY-MM-DD date (from initial scaffold creation) or a git commit SHA (from a previous upgrade). This skill fetches the latest scaffold from the wikibones GitHub repo, diffs what changed, and applies updates.
If .claude/scaffold-version doesn't exist, this wiki predates versioning โ treat everything as potentially stale and do a full comparison.
LATEST=$(curl -fsS https://api.github.com/repos/carteakey/wikibones/commits/main 2>/dev/null \
| python3 -c "import sys,json; print(json.load(sys.stdin)['sha'])" 2>/dev/null)
If python3 is unavailable, use grep + cut:
LATEST=$(curl -fsS https://api.github.com/repos/carteakey/wikibones/commits/main 2>/dev/null \
| grep '"sha"' | head -1 | cut -d'"' -f4)
Read the current version:
BASE=$(cat .claude/scaffold-version 2>/dev/null || echo "")
Use the GitHub compare API, filtering for scaffold files:
curl -fsS "https://api.github.com/repos/carteakey/wikibones/compare/${BASE}...${LATEST}" \
| python3 -c "
import sys, json
files = json.load(sys.stdin).get('files', [])
for f in files:
name = f['filename']
if name in ['CLAUDE.md', 'AGENTS.md', 'MANIFEST.md', 'llm-wiki.md', 'serve.py', 'requirements-viewer.txt'] \
or name.startswith('.claude/skills/') \
or name.startswith('templates/'):
print(name)
"
created:... or missingDo a full comparison โ fetch every scaffold file from GitHub and diff against local copies. See the fetch helper below.
Always download to a temp file first, validate it's not an error response, then move into place:
fetch_file() {
local url="$1" dest="$2"
local tmp=$(mktemp)
if curl -fsS "$url" -o "$tmp" 2>/dev/null && [ -s "$tmp" ]; then
mv "$tmp" "$dest"
return 0
else
rm -f "$tmp"
echo "WARN: failed to fetch $url"
return 1
fi
}
SCAFFOLD_BASE="https://raw.githubusercontent.com/carteakey/wikibones/main"
All scaffold files live at the root or in .claude/skills/ in the wikibones repo:
${SCAFFOLD_BASE}/CLAUDE.md
${SCAFFOLD_BASE}/AGENTS.md
${SCAFFOLD_BASE}/llm-wiki.md
${SCAFFOLD_BASE}/serve.py
${SCAFFOLD_BASE}/requirements-viewer.txt
${SCAFFOLD_BASE}/.claude/skills/ingest/SKILL.md
${SCAFFOLD_BASE}/.claude/skills/digest/SKILL.md
${SCAFFOLD_BASE}/.claude/skills/lint/SKILL.md
${SCAFFOLD_BASE}/.claude/skills/ingest-tweets/SKILL.md
${SCAFFOLD_BASE}/.claude/skills/sync-wikis/SKILL.md
${SCAFFOLD_BASE}/.claude/skills/upgrade/SKILL.md
These files are tooling or agent instructions that the user doesn't customize:
.claude/skills/*/SKILL.md โ skill definitions (overwrite entirely, also add any new skills that didn't exist before)AGENTS.md โ cross-agent instructionsllm-wiki.md โ reference document (read-only)serve.py and requirements-viewer.txt โ local wiki viewer toolingtemplates/ โ optional scaffold templates, safe to add or update unless the target has customized them locallyFor new skills that didn't exist when the wiki was created, create the directory and download:
mkdir -p .claude/skills/new-skill-name
fetch_file "${SCAFFOLD_BASE}/.claude/skills/new-skill-name/SKILL.md" ".claude/skills/new-skill-name/SKILL.md"
These files contain user-specific content and must be merged, not overwritten:
CLAUDE.md โ contains the wiki name and possibly user-added rules. Fetch the latest template, show what sections changed, and apply structural changes while preserving the wiki name and any custom additions.For CLAUDE.md:
{{WIKI_NAME}} as a placeholder)Ensure these entries exist (append any missing):
publish.json
.rebuild
**/.DS_Store
.claude/settings.json โ local agent settings, not a scaffold fileMANIFEST.md โ live ingest state, user data; never overwritewiki/ โ all wiki pages are user contentraw/ โ immutable source documentsAfter applying all changes:
echo "$LATEST" > .claude/scaffold-version
Summarize what was updated:
Append to wiki/log.md:
## [YYYY-MM-DD HH:MM] upgrade | scaffold updated to <short-sha>
wiki/ or raw/ content โ this skill only updates infrastructure.curl > target directly..claude/scaffold-version exists, do a full comparison and let the user review everything. Write the version file after.