Skip to content
wiki-fold logo

wiki-fold: Extractive Log Rollup

wiki-fold

Rollup of wiki log entries into meta-pages. Reads the last 2^k entries from wiki/log.md, writes a structurally-idempotent fold page to wiki/folds/ that links back to children. Extractive summarization (no invention). Dry-run by default, stdout-only; commit mode writes and accepts that the PostToo...

SKILL.md

Full skill instructions

wiki-fold: Extractive Log Rollup

Implements a bounded subset of Mechanism 1 from [[DragonScale Memory]]: flat fold over raw wiki/​log.md entries. Fold-of-folds (hierarchical level-stacking) is out of scope for this skill; see "Scope boundary" below.

A fold is additive: child log entries and their referenced pages are never modified, moved, or deleted. A fold is extractive: every outcome and theme in the output must be traceable to a specific child log entry. No invented facts, no synthesis beyond what the child entries support.


Scope boundary (explicit)

This skill does not implement:

  • Fold-of-folds / hierarchical level stacking (DragonScale spec calls for it; deferred to a future skill).
  • Automatic triggering (folds are always human-invoked in Phase 1).
  • Semantic-tiling dedup (Mechanism 3; separate skill).

It does implement:

  • Flat fold over raw log.md entries at a chosen batch exponent k.
  • Structural idempotency via a deterministic fold ID.
  • Extractive summarization with count-checking.

When referring to level in frontmatter, use batch_exponent: k (not level: k), because this skill does not produce hierarchical levels.


Modes

ModeWrites?Invocation
dry-run (default)No Write tool calls. Emit fold content via Bash cat/heredoc to stdout only.fold the log, dry-run k=3
commitUses Write/​Edit tools. Each Write fires the repo PostToolUse hook which auto-commits wiki changes. Accept this. Compose full content first, then sequence writes.fold the log, commit k=3 (only after a clean dry-run)

Why stdout-only in dry-run: the repo's hooks/​hooks.json PostToolUse hook fires on any Write|Edit and runs git add wiki/ .raw/. Writing to /​tmp does not stage /​tmp, but it still triggers the hook, which will commit any pending wiki changes under a generic message. Dry-run must leave zero residue. Bash stdout does not fire the hook.


Concurrency (v1.7+)

The fold-page write in commit mode MUST be preceded by wiki-lock acquire:

FOLD_PATH="wiki/​folds/​${FOLD_ID}.md"
bash scripts/​wiki-lock.sh acquire "$FOLD_PATH" || {
  echo "FAIL: another writer holds $FOLD_PATH; aborting fold."; exit 75
}
# … write the fold via Write/​Edit (which fires the PostToolUse hook) …
bash scripts/​wiki-lock.sh release "$FOLD_PATH"

Fold pages are deterministically named (fold-k{K}-from-{DATE}-to-{DATE}-n{COUNT}.md), so two parallel folds with the same parameters target the same path. Without the lock, they could overwrite each other's outputs. The duplicate-detection check inside this skill (already documented below) handles the "fold already exists" case at the SKILL level; the lock handles the in-flight-write race at the OS level.

Dry-run mode does not acquire a lock (no writes happen).

See skills/​wiki-ingest/​SKILL.md §Concurrency for the full lock semantics.


Deterministic fold ID

Every fold has an ID derived from its inputs:

fold-k{K}-from-{EARLIEST-DATE}-to-{LATEST-DATE}-n{COUNT}

Example: fold-k3-from-2026-04-10-to-2026-04-23-n8.

The filename in commit mode is wiki/​folds/​{FOLD-ID}.md. No date-of-creation in the filename. No timestamp in the title.

Duplicate detection (required): before emitting any output, check if wiki/​folds/​{FOLD-ID}.md already exists. If so, report "Fold already exists at wiki/​folds/​{FOLD-ID}.md. Use --force to overwrite, or pick a different range." and stop. This is the no-op idempotency guarantee; byte-identical content is NOT guaranteed (LLM prose varies) but the filename and scope are.


Parameters

  • k (default 4): batch exponent. Batch size = 2^k. Typical values: k=3 (8), k=4 (16), k=5 (32).
  • range (optional): explicit entry range entries 1-16. Overrides k.
  • --force: overwrite an existing fold with the same ID. Default no.
  • --commit: write to wiki/​. Without it, dry-run stdout-only.

If fewer than 2^k log entries exist, report the shortfall and stop. Do not silently fold a partial batch.


Procedure

1. Parse log entries

grep -n "^## \[" wiki/​log.md | head -{2^k}

Record for each entry: line number, date, operation, title, and the following bullet lines until the next ## [ or end-of-section.

2. Extract child page identifiers

From each entry's bullet list, extract:

  • Location: wiki/​path/​to/​page.md (the primary page)
  • [[Wikilinks]] inline
  • Pages created: and Pages updated: lists

Build a structured children list:

children:
  - date: "2026-04-23"
    op: "save"
    title: "DragonScale Memory v0.2 — post-adversarial-review"
    page: "[[DragonScale Memory]]"
  - ...

One record per log entry. Do not dedupe by page: if two entries both point to [[DragonScale Memory]], both records appear, distinguishable by date and title.

3. Read referenced pages (bounded)

Read only the pages that are not already captured fully in the log entry's bullets. Budget: 0-10 page reads. Hard ceiling: 15. If an entry's referenced page is missing, record page_missing: true and proceed.

4. Extractive summarization with count checks

Write the fold body per references/​fold-template.md. Rules:

  • Extractive only. Every outcome bullet and theme bullet must cite a specific child entry (e.g., (from 2026-04-14 session)) or a quoted line from that entry. Do not introduce events, counts, or interpretations not present in a child entry.
  • Log entry is the primary source. If the log entry's bullets and the referenced meta-page disagree on a fact (e.g., a count), prefer the log-entry bullets and flag the mismatch as "source mismatch: log says X, meta says Y."
  • Count checks. If you write "N concept pages" or "M repos updated," grep the source entries for the number and verify. Numeric mismatches are dry-run blockers.
  • No merging across entries without naming them. A theme that spans multiple entries must name each contributing entry inline.
  • Uncertainty is a feature. If an entry is ambiguous, say "ambiguous in source: [[Entry]]" rather than picking one interpretation.

5. Self-check before emitting

Before printing output, verify:

  • Every child in children: frontmatter appears exactly once in the Child Entries table.
  • Every entry in the table appears in the children: frontmatter.
  • Every numeric claim in Key Outcomes is grep-verifiable against a child entry.
  • The fold ID is deterministic and the file does not already exist (or --force is set).

If any check fails, abort and report the specific failure.

6. Emit

Dry-run: use Bash cat <<'EOF' ... EOF to stdout. Do not use Write. Print the fold ID and a one-line summary of what the commit step would do.

Commit (only after user says "commit the fold"):

  1. Write the fold page to wiki/​folds/​{FOLD-ID}.md. (PostToolUse hook will auto-commit this.)
  2. Edit wiki/​index.md to add the fold link under a ## Folds section (create section if missing). (Hook auto-commits.)
  3. Edit wiki/​log.md to prepend one entry:
    ## [YYYY-MM-DD] fold | batch-exponent-k{K} rollup of N entries
    - Location: wiki/​folds/​{FOLD-ID}.md
    - Range: {EARLIEST-DATE} to {LATEST-DATE}
    - Children: N log entries
    
    (Hook auto-commits.)

Three auto-commits result. The user sees three separate wiki: auto-commit entries in git log. This is expected; do not attempt to suppress the hook.


Output schema

See references/​fold-template.md for the canonical frontmatter and body layout.


Invariants

  1. Structural idempotency: same range + same k → same fold ID → duplicate detection prevents double-writes. LLM prose may vary across runs; the location and scope are fixed.
  2. Additive: children are never modified.
  3. Bounded reads: 0-15 child-page reads per fold.
  4. Extractive: zero invented facts. Count checks enforced.
  5. No chaining: wiki-fold does not invoke wiki-lint, wiki-ingest, autoresearch, or save.

What NOT to do

  • Do not use Write/​Edit during dry-run. Bash stdout only.
  • Do not include the current date in the fold filename or title. Use the child entry range.
  • Do not silently dedupe children by page title. One record per log entry.
  • Do not write "emergent themes" that span entries without naming which entries contribute.
  • Do not claim byte-identical idempotency. Structural idempotency is the actual guarantee.
  • Do not suppress or bypass the PostToolUse auto-commit hook.
  • Do not update wiki/​hot.md. Ownership stays with save/​ingest skills.

Reversal

Committed fold reversal (three commits, land in this order):

  1. Remove the log.md fold entry.
  2. Remove the index.md entry.
  3. Delete the fold page file.

Or: git revert the three auto-commits. Child pages are untouched in either path.


Example dry-run sequence

User: "fold the log, dry-run k=3"

  1. Parse wiki/​log.md top 8 entries.
  2. Build structured children list (8 records).
  3. Read 0-10 referenced pages as needed.
  4. Produce fold ID: fold-k3-from-2026-04-10-to-2026-04-23-n8.
  5. Check wiki/​folds/​fold-k3-from-2026-04-10-to-2026-04-23-n8.md does not exist.
  6. Write fold body following the template.
  7. Run self-check (frontmatter/​table consistency, count verification).
  8. Emit via cat <<'EOF' ... EOF to stdout.
  9. Report: "Dry-run complete. Fold ID: {FOLD-ID}. To commit: 'commit the fold'."

How to think (10-principle mapping)

When working on this skill, apply the 10-principle loop. See skills/​think/​SKILL.md for the canonical framework.

#PrincipleApplication here
1OBSERVE (ext)Read the last 2^k log entries FULLY. Skimming defeats extractive summarization.
2OBSERVE (int)Am I tempted to synthesize beyond what the child entries support? Extractive-only is the binding rule.
3LISTENWhich themes emerge naturally from the child entries? Don't impose themes from outside the children.
4THINKExtractive only. Every outcome must be traceable to a specific child entry. Count check at the end.
5CONNECT (lat)Cross-entry patterns ARE the value-add. The single-entry view misses these.
6CONNECT (sys)DragonScale Mechanism 1 + wiki-lock + address allocator. Folds are part of the memory architecture.
7FEELA good fold lets future-me skim a year of work in 5 minutes. Aim for that compression.
8ACCEPTDry-run first. Commit only when the self-check passes. Honor the bounded-scope constraint (no fold-of-folds yet).
9CREATEFold page at wiki/​folds/<fold-id>.md linking to all child entries.
10GROWFold-of-folds (hierarchical level-stacking) is v_next scope — note as you encounter it, don't sneak it in.

More skills from gabrielmoreira

workflow-router logo
gabrielmoreira/agent-skills-mirror

workflow-router

研发工作流入口 - 帮助用户快速进入正确的工作流阶段。 触发关键词: 工作流, 流程, 从哪开始, 帮我, 我该怎么做, 下一步, workflow, 不知道用什么, 新手引导, 怎么用

19 0
View
平台架构知识 logo
gabrielmoreira/agent-skills-mirror

平台架构知识

Periodically refreshed mirror of agents, skills, prompts and instruction files from public repositories.

19 0
View
unity-profiler logo
gabrielmoreira/agent-skills-mirror

unity-profiler

Read-only Unity runtime performance snapshots — FPS, frame time, batches/draw calls, triangles/vertices, memory (total/mono/per-asset), object counts, AssetBundle stats. Exact signatures via GET /skills/schema.

19 0
View
ads-audit logo
gabrielmoreira/agent-skills-mirror

ads-audit

Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, Microsoft Ads, and Apple Ads accounts via 6 parallel audit agents. Amazon Ads, cross-platform attribution, and server-side tracking are covered by their standalon...

19 0
View
unity-skills logo
gabrielmoreira/agent-skills-mirror

unity-skills

Unity Editor automation via REST API — create scripts, analyze scenes, manage assets, control editor, orchestrate workflows, run batch jobs, and route by Unity version. Triggers: Unity, Unity Skills, in Unity, automate Unity, Unity editor automation, create Unity script, scene summary, analyze Un...

19 0
View
purple-cow-audit logo
gabrielmoreira/agent-skills-mirror

purple-cow-audit

Score product remarkability 1-10 to decide if it's worth promoting. Seth Godin's Purple Cow test. Triggers on: "is this product worth promoting", "should I promote", "product audit", "purple cow", "remarkable product", "is it remarkable", "rate this product", "product quality check", "worth my re...

19 0
View
unity-cleaner logo
gabrielmoreira/agent-skills-mirror

unity-cleaner

Project cleanup and audit — find unused assets, content-hash duplicates, missing references, empty folders, large assets, dependency trees; two-step confirm-token delete. Exact signatures via GET /skills/schema.

19 0
View
skill-manager-guide logo
gabrielmoreira/agent-skills-mirror

skill-manager-guide

**GUIDE SKILL** — Guide to the Skill Manager for Copilot extension. USE FOR: adding/removing skill repos, syncing skills, pushing feedback, configuring sync intervals, troubleshooting sync issues, understanding skill format. DO NOT USE FOR: creating new skills (use skill-creator), creating agents...

19 0
View
configure-nightwatch logo
gabrielmoreira/agent-skills-mirror

configure-nightwatch

Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies. Use when setting up Nightwatch, managing data volume, protecting sensitive data (PII), or optimizing event collection for production workloads.

19 0
View
research-and-write logo
gabrielmoreira/agent-skills-mirror

research-and-write

End-to-end workflow: research a topic and then write a LinkedIn post about it. Use this skill whenever the user wants the full pipeline — from a topic idea to a finished LinkedIn post. Triggers on: 'research and write a post about', 'create a LinkedIn post about [topic]', 'I want to post about', ...

19 0
View
AI Tutor Persona logo
gabrielmoreira/agent-skills-mirror

AI Tutor Persona

Periodically refreshed mirror of agents, skills, prompts and instruction files from public repositories.

19 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View