{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sequential-read",
    "name": "Sequential Read",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/horace-claw/sequential-read",
    "canonicalUrl": "https://clawhub.ai/horace-claw/sequential-read",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sequential-read",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sequential-read",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "preread/SKILL.md",
      "reading/SKILL.md",
      "scripts/chunk_manager.py",
      "scripts/session_manager.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "sequential-read",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T15:17:04.739Z",
      "expiresAt": "2026-05-07T15:17:04.739Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sequential-read",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sequential-read",
        "contentDisposition": "attachment; filename=\"sequential-read-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "sequential-read"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/sequential-read"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/sequential-read",
    "agentPageUrl": "https://openagent3.xyz/skills/sequential-read/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sequential-read/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sequential-read/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "📖 Sequential Read",
        "body": "Read prose (novels, non-fiction, articles) by ingesting content in semantic chunks and building structured reflections iteratively. The output captures how your perspective developed over the course of reading — predictions that were wrong, questions that got answered, opinions that shifted — not just a retroactive summary."
      },
      {
        "title": "Invocation",
        "body": "CommandDescription/sequential-read <path-to-file>Run a full reading session/sequential-read <path-to-file> --lens <persona>Read with a perspective (e.g., \"skeptic\", \"literary critic\", \"student\")/sequential-read listList all sessions/sequential-read show <session-id>Show the synthesis for a completed session"
      },
      {
        "title": "Execution Model",
        "body": "The pipeline runs in spawned sub-agents. Novel-length reads are a two-phase process: a main reader that handles the bulk of chunks, then a finisher that completes the remaining chunks and writes synthesis. This is the normal flow, not an error.\n\nWhen the user invokes /sequential-read:\n\nParse the command to extract the file path and optional lens\nPre-create the session:\npython3 {baseDir}/scripts/session_manager.py create <source-file>\n\n\nSpawn the main reader sub-agent:\nsessions_spawn with label: reader-{session-id}\nTell the agent: \"Session already exists at {session-id}. Do NOT create it again.\"\n\n\nTell the user the session has started and they'll be notified when it's done\nWhen the main reader returns (whether it completed or died mid-read):\n\nCheck session status: python3 {baseDir}/scripts/session_manager.py get <session-id>\nCheck how many reflections exist vs total chunks\nIf synthesis exists: Done. Present results.\nIf chunks remain or synthesis is missing: Spawn a finisher sub-agent (see below). This is the expected path for novels.\n\n\nWhen the finisher returns, present the synthesis and session path."
      },
      {
        "title": "The Two-Phase Pattern",
        "body": "For novels (~20+ chunks), the main reader typically handles ~17-20 chunks before its context fills and the session ends. This is expected behavior, not failure. The finisher picks up the remaining 2-5 chunks and writes the synthesis with full context of all prior reflections.\n\nSpawning the finisher:\n\nsessions_spawn with label: finisher-{session-id}, model: \"opus\"\nTask: \"Resume reading session {session-id} at {baseDir path}.\n  Read reflections written so far to understand context.\n  Continue from chunk N (the next unwritten chunk).\n  Write remaining reflections, then run synthesis.\n  Session path: {session-path}\"\n\nDo not wait or ask the user between the main reader and finisher. When the main reader returns without a synthesis, immediately spawn the finisher. The whole pipeline should be hands-off."
      },
      {
        "title": "Script Paths",
        "body": "All Python scripts are in {baseDir}/scripts/:\n\n{baseDir}/scripts/session_manager.py\n{baseDir}/scripts/chunk_manager.py\n{baseDir}/scripts/state_manager.py\n\nTemplates are in {baseDir}/templates/:\n\n{baseDir}/templates/reflection_prompt.md\n{baseDir}/templates/synthesis_prompt.md"
      },
      {
        "title": "/sequential-read <path-to-file> [--lens <persona>]",
        "body": "1. Create or Resume Session\n\npython3 {baseDir}/scripts/session_manager.py create <source-file> [--lens <persona>]\n\nThis command handles resume detection automatically:\n\nIf an in-progress session exists for the same source filename, it prints the existing session-id and path\nOtherwise it creates a new session\n\nCapture the session-id from the first line of output.\n\n2. Check Session Status (for resumed sessions)\n\npython3 {baseDir}/scripts/session_manager.py get <session-id>\n\nCheck the status field to determine where to resume:\n\nStatusActionprereadRun preread phase from the startchunkedRun reading phase (resumes from current_chunk)readRun synthesis phasecompleteDisplay the existing synthesis\n\n3. Run the Pipeline\n\nFor a new session or preread status:\n\nRun the preread sub-skill ({baseDir}/preread/SKILL.md) with:\n\nSESSION_ID = the session-id\nSOURCE_FILE = path to the source text\nBASE_DIR = {baseDir}\n\nFor chunked status (or after preread completes):\n\nRun the reading sub-skill ({baseDir}/reading/SKILL.md) with:\n\nSESSION_ID = the session-id\nBASE_DIR = {baseDir}\nLENS = the lens value (or null)\n\nFor read status (or after reading completes):\n\nRun the synthesis sub-skill ({baseDir}/synthesis/SKILL.md) with:\n\nSESSION_ID = the session-id\nBASE_DIR = {baseDir}\n\n4. Present Results\n\nAfter synthesis completes, send the user:\n\nThe full synthesis text\nThe session path: memory/sequential_read/<session-id>/\nA brief note: how many chunks, whether a lens was used"
      },
      {
        "title": "/sequential-read list",
        "body": "python3 {baseDir}/scripts/session_manager.py list\n\nPrint the output to the user."
      },
      {
        "title": "/sequential-read show <session-id>",
        "body": "python3 {baseDir}/scripts/session_manager.py get <session-id>\n\nIf status is complete, read and display:\n\nmemory/sequential_read/<session-id>/output/synthesis.md\n\nIf not complete, show the session status and progress."
      },
      {
        "title": "Model Guidance",
        "body": "The reading phase is the most demanding — it runs for many iterations and must sustain quality throughout. Choose the model based on source length:\n\nSource LengthRecommended ModelRationaleNovel (10k+ lines, 20+ chunks)OpusSustained quality over many iterations; large context window handles accumulated stateNovella / long essay (3k-10k lines)Opus or SonnetEither works; Sonnet is fine if chunks stay under 15Article / short work (<3k lines)SonnetFew chunks, context stays manageable\n\nWhen spawning the sub-agent, set the model explicitly: model: \"opus\" for novels.\n\nWhy this matters: Lighter models degrade over long reading sessions — reflections become stubs as context accumulates. The first test run of this skill on Sonnet with a 35-chunk novel produced 4 genuine reflections and 31 placeholders. Opus is required for novel-length works.\n\nChunk sizing: The structural chunker targets ~550 lines per chunk (range 200-700). For a typical novel (~10-12k lines), this produces ~20 chunks. Longer texts (15k+ lines) may produce 35+ chunks and will need a finisher session (see below).\n\nThe two-phase pattern is standard. For novel-length works (20+ chunks), always expect to spawn a finisher after the main reader. The main reader handles ~80-90% of chunks; the finisher handles the rest plus synthesis. For very long texts (35+ chunks), the main reader may only get ~25 chunks. Plan accordingly -- this is the normal pipeline, not error recovery.\n\nPre-create sessions: Always create the session with session_manager.py create BEFORE spawning the sub-agent. Tell the agent the session already exists and not to create it again. This avoids failures from duplicate creation attempts."
      },
      {
        "title": "Reader Context (Optional)",
        "body": "If you maintain reader-mind files (accumulated reading context — character knowledge, thematic threads, critical framework), load them into the sub-agent's task prompt as preamble. This gives the reader continuity across books in a series.\n\nInclude context in the spawn task:\n\n\"Before you begin reading, here is your accumulated reader context:\n\n=== READING CONTEXT ===\n[contents of reader-mind file]\n\nNow read [book title]...\"\n\nAfter synthesis, update reader-mind files with new character knowledge, thematic thread updates, and cross-reference observations. Revise rather than append. Keep under ~4000 words per file."
      },
      {
        "title": "Important Guidelines for the Reading Agent",
        "body": "No peeking. Each reflection must be written from the perspective of not knowing what comes next. Do not reference content from later chunks.\nBe honest. Confusion, boredom, excitement, disagreement are all valid reactions. Don't perform engagement.\nBe specific in revisions. \"I was wrong about X because Y\" beats \"my view has evolved.\"\nThe lens is a suggestion. If the lens feels forced for a particular chunk, note that in the reaction rather than straining to apply it.\nRun autonomously. Do not stop to ask the user questions between chunks. The entire pipeline is set-and-forget.\nPersist everything. Every reflection and state update is saved to disk before moving to the next chunk, enabling resume on interruption."
      },
      {
        "title": "Post-Synthesis",
        "body": "After synthesis is complete, you can integrate the output into whatever workflow you prefer — blog posts, reading logs, knowledge graphs, series trackers, etc. The synthesis file at output/synthesis.md is self-contained and portable."
      }
    ],
    "body": "📖 Sequential Read\n\nRead prose (novels, non-fiction, articles) by ingesting content in semantic chunks and building structured reflections iteratively. The output captures how your perspective developed over the course of reading — predictions that were wrong, questions that got answered, opinions that shifted — not just a retroactive summary.\n\nInvocation\nCommand\tDescription\n/sequential-read <path-to-file>\tRun a full reading session\n/sequential-read <path-to-file> --lens <persona>\tRead with a perspective (e.g., \"skeptic\", \"literary critic\", \"student\")\n/sequential-read list\tList all sessions\n/sequential-read show <session-id>\tShow the synthesis for a completed session\nExecution Model\n\nThe pipeline runs in spawned sub-agents. Novel-length reads are a two-phase process: a main reader that handles the bulk of chunks, then a finisher that completes the remaining chunks and writes synthesis. This is the normal flow, not an error.\n\nWhen the user invokes /sequential-read:\n\nParse the command to extract the file path and optional lens\nPre-create the session:\npython3 {baseDir}/scripts/session_manager.py create <source-file>\n\nSpawn the main reader sub-agent:\nsessions_spawn with label: reader-{session-id}\nTell the agent: \"Session already exists at {session-id}. Do NOT create it again.\"\n\nTell the user the session has started and they'll be notified when it's done\nWhen the main reader returns (whether it completed or died mid-read):\nCheck session status: python3 {baseDir}/scripts/session_manager.py get <session-id>\nCheck how many reflections exist vs total chunks\nIf synthesis exists: Done. Present results.\nIf chunks remain or synthesis is missing: Spawn a finisher sub-agent (see below). This is the expected path for novels.\nWhen the finisher returns, present the synthesis and session path.\nThe Two-Phase Pattern\n\nFor novels (~20+ chunks), the main reader typically handles ~17-20 chunks before its context fills and the session ends. This is expected behavior, not failure. The finisher picks up the remaining 2-5 chunks and writes the synthesis with full context of all prior reflections.\n\nSpawning the finisher:\n\nsessions_spawn with label: finisher-{session-id}, model: \"opus\"\nTask: \"Resume reading session {session-id} at {baseDir path}.\n  Read reflections written so far to understand context.\n  Continue from chunk N (the next unwritten chunk).\n  Write remaining reflections, then run synthesis.\n  Session path: {session-path}\"\n\n\nDo not wait or ask the user between the main reader and finisher. When the main reader returns without a synthesis, immediately spawn the finisher. The whole pipeline should be hands-off.\n\nScript Paths\n\nAll Python scripts are in {baseDir}/scripts/:\n\n{baseDir}/scripts/session_manager.py\n{baseDir}/scripts/chunk_manager.py\n{baseDir}/scripts/state_manager.py\n\nTemplates are in {baseDir}/templates/:\n\n{baseDir}/templates/reflection_prompt.md\n{baseDir}/templates/synthesis_prompt.md\nCommands\n/sequential-read <path-to-file> [--lens <persona>]\n1. Create or Resume Session\npython3 {baseDir}/scripts/session_manager.py create <source-file> [--lens <persona>]\n\n\nThis command handles resume detection automatically:\n\nIf an in-progress session exists for the same source filename, it prints the existing session-id and path\nOtherwise it creates a new session\n\nCapture the session-id from the first line of output.\n\n2. Check Session Status (for resumed sessions)\npython3 {baseDir}/scripts/session_manager.py get <session-id>\n\n\nCheck the status field to determine where to resume:\n\nStatus\tAction\npreread\tRun preread phase from the start\nchunked\tRun reading phase (resumes from current_chunk)\nread\tRun synthesis phase\ncomplete\tDisplay the existing synthesis\n3. Run the Pipeline\n\nFor a new session or preread status:\n\nRun the preread sub-skill ({baseDir}/preread/SKILL.md) with:\n\nSESSION_ID = the session-id\nSOURCE_FILE = path to the source text\nBASE_DIR = {baseDir}\n\nFor chunked status (or after preread completes):\n\nRun the reading sub-skill ({baseDir}/reading/SKILL.md) with:\n\nSESSION_ID = the session-id\nBASE_DIR = {baseDir}\nLENS = the lens value (or null)\n\nFor read status (or after reading completes):\n\nRun the synthesis sub-skill ({baseDir}/synthesis/SKILL.md) with:\n\nSESSION_ID = the session-id\nBASE_DIR = {baseDir}\n4. Present Results\n\nAfter synthesis completes, send the user:\n\nThe full synthesis text\nThe session path: memory/sequential_read/<session-id>/\nA brief note: how many chunks, whether a lens was used\n/sequential-read list\npython3 {baseDir}/scripts/session_manager.py list\n\n\nPrint the output to the user.\n\n/sequential-read show <session-id>\npython3 {baseDir}/scripts/session_manager.py get <session-id>\n\n\nIf status is complete, read and display:\n\nmemory/sequential_read/<session-id>/output/synthesis.md\n\n\nIf not complete, show the session status and progress.\n\nModel Guidance\n\nThe reading phase is the most demanding — it runs for many iterations and must sustain quality throughout. Choose the model based on source length:\n\nSource Length\tRecommended Model\tRationale\nNovel (10k+ lines, 20+ chunks)\tOpus\tSustained quality over many iterations; large context window handles accumulated state\nNovella / long essay (3k-10k lines)\tOpus or Sonnet\tEither works; Sonnet is fine if chunks stay under 15\nArticle / short work (<3k lines)\tSonnet\tFew chunks, context stays manageable\n\nWhen spawning the sub-agent, set the model explicitly: model: \"opus\" for novels.\n\nWhy this matters: Lighter models degrade over long reading sessions — reflections become stubs as context accumulates. The first test run of this skill on Sonnet with a 35-chunk novel produced 4 genuine reflections and 31 placeholders. Opus is required for novel-length works.\n\nChunk sizing: The structural chunker targets ~550 lines per chunk (range 200-700). For a typical novel (~10-12k lines), this produces ~20 chunks. Longer texts (15k+ lines) may produce 35+ chunks and will need a finisher session (see below).\n\nThe two-phase pattern is standard. For novel-length works (20+ chunks), always expect to spawn a finisher after the main reader. The main reader handles ~80-90% of chunks; the finisher handles the rest plus synthesis. For very long texts (35+ chunks), the main reader may only get ~25 chunks. Plan accordingly -- this is the normal pipeline, not error recovery.\n\nPre-create sessions: Always create the session with session_manager.py create BEFORE spawning the sub-agent. Tell the agent the session already exists and not to create it again. This avoids failures from duplicate creation attempts.\n\nReader Context (Optional)\n\nIf you maintain reader-mind files (accumulated reading context — character knowledge, thematic threads, critical framework), load them into the sub-agent's task prompt as preamble. This gives the reader continuity across books in a series.\n\nInclude context in the spawn task:\n\n\"Before you begin reading, here is your accumulated reader context:\n\n=== READING CONTEXT ===\n[contents of reader-mind file]\n\nNow read [book title]...\"\n\n\nAfter synthesis, update reader-mind files with new character knowledge, thematic thread updates, and cross-reference observations. Revise rather than append. Keep under ~4000 words per file.\n\nImportant Guidelines for the Reading Agent\nNo peeking. Each reflection must be written from the perspective of not knowing what comes next. Do not reference content from later chunks.\nBe honest. Confusion, boredom, excitement, disagreement are all valid reactions. Don't perform engagement.\nBe specific in revisions. \"I was wrong about X because Y\" beats \"my view has evolved.\"\nThe lens is a suggestion. If the lens feels forced for a particular chunk, note that in the reaction rather than straining to apply it.\nRun autonomously. Do not stop to ask the user questions between chunks. The entire pipeline is set-and-forget.\nPersist everything. Every reflection and state update is saved to disk before moving to the next chunk, enabling resume on interruption.\nPost-Synthesis\n\nAfter synthesis is complete, you can integrate the output into whatever workflow you prefer — blog posts, reading logs, knowledge graphs, series trackers, etc. The synthesis file at output/synthesis.md is self-contained and portable."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/horace-claw/sequential-read",
    "publisherUrl": "https://clawhub.ai/horace-claw/sequential-read",
    "owner": "horace-claw",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sequential-read",
    "downloadUrl": "https://openagent3.xyz/downloads/sequential-read",
    "agentUrl": "https://openagent3.xyz/skills/sequential-read/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sequential-read/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sequential-read/agent.md"
  }
}