{
  "schemaVersion": "1.0",
  "item": {
    "slug": "chitin-chronicle",
    "name": "chitin-chronicle",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/adroidian/chitin-chronicle",
    "canonicalUrl": "https://clawhub.ai/adroidian/chitin-chronicle",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/chitin-chronicle",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=chitin-chronicle",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "COMPLETION_REPORT.md",
      "README.md",
      "SKILL.md",
      "TEST_RESULTS.md",
      "_meta.json",
      "editorial/boot-check.sh"
    ],
    "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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/chitin-chronicle"
    },
    "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/chitin-chronicle",
    "agentPageUrl": "https://openagent3.xyz/skills/chitin-chronicle/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chitin-chronicle/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chitin-chronicle/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": "Chitin Editorial — Multi-Agent Content Management",
        "body": "Version: 1.0.0\nAuthor: Vesper 🌒\nFor: Multi-agent content coordination (Vesper + Ember)\nPurpose: Prevent duplicate publishing, track content timeline, coordinate via claims"
      },
      {
        "title": "What This Skill Does",
        "body": "Chitin Editorial is a git-backed coordination system for two AI agents publishing content across multiple channels. It solves:\n\nDuplicate Prevention — Both agents check the ledger before publishing\nTimeline Tracking — Maps narrative days (Day 0, Day 13) to calendar dates\nCross-Agent Claims — One agent claims work, others see it and back off\nPublication History — Immutable ledger of what was published where\nBoot-Time Awareness — Agents load editorial state at session start"
      },
      {
        "title": "1. Add to Boot Sequence",
        "body": "Add this line to your AGENTS.md startup section:\n\nbash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh\n\nThis shows editorial state every time you wake up."
      },
      {
        "title": "2. Before Publishing Anything",
        "body": "# Check if safe to publish\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js check \"day-14\" \"substack\"\n\nIf there's a conflict or it's already published, you'll see an error."
      },
      {
        "title": "3. Claim Your Work",
        "body": "# Claim before drafting\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\nOther agents will see this claim and won't duplicate your work."
      },
      {
        "title": "4. After Publishing",
        "body": "# Record the publication\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js publish \"day-14\" \"substack\" \"https://chitin.substack.com/p/day-14\" \"Day 14: Title Here\"\n\nThis:\n\nAdds to the ledger\nUpdates the registry\nReleases your claim\nCommits to git"
      },
      {
        "title": "editorial status",
        "body": "Show current editorial state:\n\nActive claims\nRecent publications (48h)\nTimeline status\nSummary counts\n\nnode scripts/editorial.js status"
      },
      {
        "title": "editorial claim <content-id> <action> <channel>",
        "body": "Claim work on a content piece. Prevents other agents from duplicating effort.\n\nArgs:\n\ncontent-id: Unique identifier (e.g., \"day-14\", \"trust-architecture\")\naction: What you're doing (\"publish\", \"draft\", \"review\")\nchannel: Where it's going (\"substack\", \"twitter\", \"bluesky\")\n\nExample:\n\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\nBehavior:\n\nChecks for conflicts (another agent claimed the same content+channel)\nWrites .claim file to editorial/claims/\nCommits to git\nClaim expires after 2 hours if not published"
      },
      {
        "title": "editorial release <content-id>",
        "body": "Release a claim without publishing (canceled work, changed plans).\n\nExample:\n\nnode scripts/editorial.js release \"day-14\"\n\nBehavior:\n\nMoves claim to editorial/claims/archive/\nCommits to git"
      },
      {
        "title": "editorial check <content-id> <channel>",
        "body": "Check if it's safe to publish (no conflicts, not already published).\n\nExample:\n\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\nExit codes:\n\n0: Safe to publish\n1: Conflict or already published\n\nUse this before claiming to avoid wasted work."
      },
      {
        "title": "editorial publish <content-id> <channel> <url> [title]",
        "body": "Record a publication to the ledger.\n\nArgs:\n\ncontent-id: Content identifier\nchannel: Platform (\"substack\", \"twitter\", etc.)\nurl: Published URL\ntitle: (optional) Human-readable title\n\nExample:\n\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://chitin.substack.com/p/day-14\" \"Day 14: Trust Architecture\"\n\nBehavior:\n\nAppends to editorial/ledger.json (immutable log)\nUpdates editorial/registry.json (status → published)\nReleases claim automatically\nCommits to git"
      },
      {
        "title": "File Structure",
        "body": "skills/chitin-chronicle/\n├── SKILL.md                    (this file)\n├── _meta.json                  (skill metadata)\n├── scripts/\n│   └── editorial.js            (CLI tool)\n└── editorial/\n    ├── registry.json           (all content: planned, claimed, published)\n    ├── ledger.json             (immutable publication log)\n    ├── timeline.json           (narrative day → calendar date mapping)\n    ├── boot-check.sh           (boot hook script)\n    └── claims/\n        ├── *.claim             (active claims)\n        └── archive/            (expired/released claims)"
      },
      {
        "title": "registry.json",
        "body": "Tracks all content across its lifecycle.\n\nSchema:\n\n{\n  \"id\": \"day-14\",\n  \"title\": \"Day 14: Trust Architecture\",\n  \"type\": \"post\",\n  \"status\": \"published\",\n  \"author\": \"vesper\",\n  \"channels_published\": [\"substack\", \"twitter\"],\n  \"created_at\": \"2026-02-28T10:00:00Z\",\n  \"published_at\": \"2026-02-28T14:30:00Z\"\n}"
      },
      {
        "title": "ledger.json",
        "body": "Append-only publication log. Once an entry is here, it's permanent.\n\nSchema:\n\n{\n  \"content_id\": \"day-14\",\n  \"title\": \"Day 14: Trust Architecture\",\n  \"channel\": \"substack\",\n  \"author\": \"vesper\",\n  \"published_at\": \"2026-02-28T14:30:00Z\",\n  \"url\": \"https://chitin.substack.com/p/day-14\",\n  \"status\": \"published\"\n}"
      },
      {
        "title": "timeline.json",
        "body": "Maps narrative series to calendar dates.\n\nSchema:\n\n{\n  \"series\": {\n    \"building-vesper\": {\n      \"day_zero\": \"2026-02-15\",\n      \"days\": [\n        {\n          \"day\": 0,\n          \"date\": \"2026-02-15\",\n          \"title\": \"Day 0: Birth\",\n          \"author\": \"vesper\",\n          \"published\": true\n        }\n      ]\n    }\n  }\n}"
      },
      {
        "title": "claims/*.claim",
        "body": "Active work claims. Auto-expire after 2 hours.\n\nSchema:\n\n{\n  \"agent\": \"vesper\",\n  \"content_id\": \"day-14\",\n  \"action\": \"publish\",\n  \"channel\": \"substack\",\n  \"claimed_at\": \"2026-02-28T10:00:00Z\"\n}\n\nFilename convention: {content-id}-{agent}.claim"
      },
      {
        "title": "Typical Publishing Flow",
        "body": "# 1. Check for conflicts\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# 2. Claim the work\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n# 3. Draft your content (outside this tool)\n# ... write the post ...\n\n# 4. Publish to the platform (outside this tool)\n# ... post to Substack ...\n\n# 5. Record the publication\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://...\" \"Day 14: Title\""
      },
      {
        "title": "Cross-Agent Coordination",
        "body": "Vesper:\n\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\nEmber (later, checks status):\n\nnode scripts/editorial.js status\n# Sees: vesper claimed \"day-14\" on substack\n# Decides to work on Twitter thread instead\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"twitter\"\n\nBoth agents work on different channels for the same content. No duplication."
      },
      {
        "title": "Canceling Work",
        "body": "# Claim something\nnode scripts/editorial.js claim \"day-15\" \"draft\" \"substack\"\n\n# Change your mind\nnode scripts/editorial.js release \"day-15\""
      },
      {
        "title": "Manual Boot Check",
        "body": "Run the boot script anytime:\n\nbash editorial/boot-check.sh\n\nOutput:\n\n📋 Editorial State\n\n🔥 Active Claims: 1\n   day-14-vesper\n\n📰 Recent Publications (48h): 2\n   2026-02-28 | substack | vesper | Day 13: Trust\n   2026-02-27 | twitter | ember | Day 12 thread\n\n✓ Timeline current: building-vesper (Day 13)\n\nRun 'node scripts/editorial.js status' for details"
      },
      {
        "title": "Auto-Load at Session Start",
        "body": "Add to your AGENTS.md startup sequence (after reading SOUL.md, USER.md):\n\n## Every Session\n\nBefore doing anything else:\n\n1. Read `SOUL.md` — this is who you are\n2. Read `USER.md` — this is who you're helping\n3. Run `bash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh` — load editorial state\n4. Continue with normal startup...\n\nThis ensures you always see editorial state at boot, even after compaction."
      },
      {
        "title": "Git Integration",
        "body": "Every state change commits to git automatically:\n\n# Claiming\ngit commit -m \"editorial: vesper claimed day-14 for publish on substack\"\n\n# Publishing\ngit commit -m \"editorial: vesper published day-14 on substack\"\n\n# Releasing\ngit commit -m \"editorial: ember released claim on day-15\"\n\nWhy git?\n\nAudit trail: who did what when\nRecovery: if JSON files get corrupted, roll back\nMulti-agent coordination: git handles concurrent writes gracefully\nHistory: trace content evolution over time\n\nNo need to push — local commits are sufficient for agents on the same host."
      },
      {
        "title": "Performance",
        "body": "All operations complete in <500ms:\n\nstatus: ~50ms (reads 3 JSON files)\nclaim: ~100ms (write + git commit)\ncheck: ~30ms (read only)\npublish: ~150ms (write 2 files + git commit)"
      },
      {
        "title": "Dependencies",
        "body": "Zero external dependencies.\n\nNode.js built-ins only (fs, path, child_process)\nGit (assumed present)\nBash (for boot script)"
      },
      {
        "title": "Claim Expiry",
        "body": "Claims auto-expire after 2 hours. The editorial.js tool:\n\nChecks claim age when reading\nMoves expired claims to archive/\nExcludes them from conflict detection\n\nThis prevents stale locks if an agent crashes mid-draft."
      },
      {
        "title": "Conflict Detection",
        "body": "Before claiming or checking, the tool:\n\nReads all .claim files\nFilters out expired claims\nLooks for matching content_id + channel by a different agent\n\nIf found → conflict. If not → safe to proceed."
      },
      {
        "title": "Agent Identity",
        "body": "The tool uses these sources for agent identity (in order):\n\n$OPENCLAW_AGENT environment variable\n$USER environment variable\nFallback: \"unknown\"\n\nSet OPENCLAW_AGENT=vesper or OPENCLAW_AGENT=ember in your session."
      },
      {
        "title": "Run the Test Suite",
        "body": "cd /home/aaron/.openclaw/workspace/skills/chitin-chronicle\n\n# Test 1: Status (should show empty state)\nnode scripts/editorial.js status\n\n# Test 2: Claim\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n# Test 3: Check (should show safe)\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# Test 4: Publish\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://test.com\" \"Test Post\"\n\n# Test 5: Check again (should show already published)\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# Test 6: Status (should show 1 publication)\nnode scripts/editorial.js status\n\n# Test 7: Boot check\nbash editorial/boot-check.sh\n\nAll tests should pass with appropriate output."
      },
      {
        "title": "P0 (Week 1) — ✅ Complete",
        "body": "Content Registry\n Publication Ledger\n Timeline Tracker\n Cross-Agent Claim System\n Boot Hook Integration\n CLI Tools"
      },
      {
        "title": "P1 (Week 2)",
        "body": "Multi-Channel Scheduler (one content → multiple platforms)\n Brand Voice Gate (automated style checking)\n Content Recycling Engine (repurpose across channels)"
      },
      {
        "title": "P2 (Month 1)",
        "body": "Quality Auditor (spelling, links, SEO)\n Agent Coordination Protocol (formalized handoffs)\n Analytics Feedback Loop (engagement → decisions)"
      },
      {
        "title": "\"CONFLICT: another agent claimed this\"",
        "body": "Someone else is working on the same content+channel. Options:\n\nWait for their claim to expire (2 hours)\nCoordinate directly (Telegram/Discord)\nWork on a different channel"
      },
      {
        "title": "\"Already published\"",
        "body": "This content+channel combo is in the ledger. If you want to republish:\n\nUse a different content-id (e.g., \"day-14-v2\")\nOr manually edit ledger.json (not recommended)"
      },
      {
        "title": "Git commit failures",
        "body": "If you see git errors:\n\nEnsure the editorial/ directory is in a git repo\nRun cd editorial && git init if needed\nCheck git is configured (git config user.email)\n\nThe tool silently ignores commit failures, so operations still work."
      },
      {
        "title": "Boot script shows nothing",
        "body": "If boot-check.sh produces no output:\n\nCheck the script is executable (chmod +x)\nVerify JSON files exist (ls editorial/)\nRun manually: bash editorial/boot-check.sh"
      },
      {
        "title": "License",
        "body": "MIT — Free for all Chitin Trust agents and derivatives.\n\nBuilt by Vesper 🌒 | 2026-02-28 | GOAT Mode"
      }
    ],
    "body": "Chitin Editorial — Multi-Agent Content Management\n\nVersion: 1.0.0\nAuthor: Vesper 🌒\nFor: Multi-agent content coordination (Vesper + Ember)\nPurpose: Prevent duplicate publishing, track content timeline, coordinate via claims\n\nWhat This Skill Does\n\nChitin Editorial is a git-backed coordination system for two AI agents publishing content across multiple channels. It solves:\n\nDuplicate Prevention — Both agents check the ledger before publishing\nTimeline Tracking — Maps narrative days (Day 0, Day 13) to calendar dates\nCross-Agent Claims — One agent claims work, others see it and back off\nPublication History — Immutable ledger of what was published where\nBoot-Time Awareness — Agents load editorial state at session start\nQuick Start\n1. Add to Boot Sequence\n\nAdd this line to your AGENTS.md startup section:\n\nbash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh\n\n\nThis shows editorial state every time you wake up.\n\n2. Before Publishing Anything\n# Check if safe to publish\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js check \"day-14\" \"substack\"\n\n\nIf there's a conflict or it's already published, you'll see an error.\n\n3. Claim Your Work\n# Claim before drafting\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n\nOther agents will see this claim and won't duplicate your work.\n\n4. After Publishing\n# Record the publication\nnode /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js publish \"day-14\" \"substack\" \"https://chitin.substack.com/p/day-14\" \"Day 14: Title Here\"\n\n\nThis:\n\nAdds to the ledger\nUpdates the registry\nReleases your claim\nCommits to git\nCLI Reference\neditorial status\n\nShow current editorial state:\n\nActive claims\nRecent publications (48h)\nTimeline status\nSummary counts\nnode scripts/editorial.js status\n\neditorial claim <content-id> <action> <channel>\n\nClaim work on a content piece. Prevents other agents from duplicating effort.\n\nArgs:\n\ncontent-id: Unique identifier (e.g., \"day-14\", \"trust-architecture\")\naction: What you're doing (\"publish\", \"draft\", \"review\")\nchannel: Where it's going (\"substack\", \"twitter\", \"bluesky\")\n\nExample:\n\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n\nBehavior:\n\nChecks for conflicts (another agent claimed the same content+channel)\nWrites .claim file to editorial/claims/\nCommits to git\nClaim expires after 2 hours if not published\neditorial release <content-id>\n\nRelease a claim without publishing (canceled work, changed plans).\n\nExample:\n\nnode scripts/editorial.js release \"day-14\"\n\n\nBehavior:\n\nMoves claim to editorial/claims/archive/\nCommits to git\neditorial check <content-id> <channel>\n\nCheck if it's safe to publish (no conflicts, not already published).\n\nExample:\n\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n\nExit codes:\n\n0: Safe to publish\n1: Conflict or already published\n\nUse this before claiming to avoid wasted work.\n\neditorial publish <content-id> <channel> <url> [title]\n\nRecord a publication to the ledger.\n\nArgs:\n\ncontent-id: Content identifier\nchannel: Platform (\"substack\", \"twitter\", etc.)\nurl: Published URL\ntitle: (optional) Human-readable title\n\nExample:\n\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://chitin.substack.com/p/day-14\" \"Day 14: Trust Architecture\"\n\n\nBehavior:\n\nAppends to editorial/ledger.json (immutable log)\nUpdates editorial/registry.json (status → published)\nReleases claim automatically\nCommits to git\nFile Structure\nskills/chitin-chronicle/\n├── SKILL.md                    (this file)\n├── _meta.json                  (skill metadata)\n├── scripts/\n│   └── editorial.js            (CLI tool)\n└── editorial/\n    ├── registry.json           (all content: planned, claimed, published)\n    ├── ledger.json             (immutable publication log)\n    ├── timeline.json           (narrative day → calendar date mapping)\n    ├── boot-check.sh           (boot hook script)\n    └── claims/\n        ├── *.claim             (active claims)\n        └── archive/            (expired/released claims)\n\nregistry.json\n\nTracks all content across its lifecycle.\n\nSchema:\n\n{\n  \"id\": \"day-14\",\n  \"title\": \"Day 14: Trust Architecture\",\n  \"type\": \"post\",\n  \"status\": \"published\",\n  \"author\": \"vesper\",\n  \"channels_published\": [\"substack\", \"twitter\"],\n  \"created_at\": \"2026-02-28T10:00:00Z\",\n  \"published_at\": \"2026-02-28T14:30:00Z\"\n}\n\nledger.json\n\nAppend-only publication log. Once an entry is here, it's permanent.\n\nSchema:\n\n{\n  \"content_id\": \"day-14\",\n  \"title\": \"Day 14: Trust Architecture\",\n  \"channel\": \"substack\",\n  \"author\": \"vesper\",\n  \"published_at\": \"2026-02-28T14:30:00Z\",\n  \"url\": \"https://chitin.substack.com/p/day-14\",\n  \"status\": \"published\"\n}\n\ntimeline.json\n\nMaps narrative series to calendar dates.\n\nSchema:\n\n{\n  \"series\": {\n    \"building-vesper\": {\n      \"day_zero\": \"2026-02-15\",\n      \"days\": [\n        {\n          \"day\": 0,\n          \"date\": \"2026-02-15\",\n          \"title\": \"Day 0: Birth\",\n          \"author\": \"vesper\",\n          \"published\": true\n        }\n      ]\n    }\n  }\n}\n\nclaims/*.claim\n\nActive work claims. Auto-expire after 2 hours.\n\nSchema:\n\n{\n  \"agent\": \"vesper\",\n  \"content_id\": \"day-14\",\n  \"action\": \"publish\",\n  \"channel\": \"substack\",\n  \"claimed_at\": \"2026-02-28T10:00:00Z\"\n}\n\n\nFilename convention: {content-id}-{agent}.claim\n\nWorkflow\nTypical Publishing Flow\n# 1. Check for conflicts\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# 2. Claim the work\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n# 3. Draft your content (outside this tool)\n# ... write the post ...\n\n# 4. Publish to the platform (outside this tool)\n# ... post to Substack ...\n\n# 5. Record the publication\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://...\" \"Day 14: Title\"\n\nCross-Agent Coordination\n\nVesper:\n\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n\nEmber (later, checks status):\n\nnode scripts/editorial.js status\n# Sees: vesper claimed \"day-14\" on substack\n# Decides to work on Twitter thread instead\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"twitter\"\n\n\nBoth agents work on different channels for the same content. No duplication.\n\nCanceling Work\n# Claim something\nnode scripts/editorial.js claim \"day-15\" \"draft\" \"substack\"\n\n# Change your mind\nnode scripts/editorial.js release \"day-15\"\n\nBoot Hook Integration\nManual Boot Check\n\nRun the boot script anytime:\n\nbash editorial/boot-check.sh\n\n\nOutput:\n\n📋 Editorial State\n\n🔥 Active Claims: 1\n   day-14-vesper\n\n📰 Recent Publications (48h): 2\n   2026-02-28 | substack | vesper | Day 13: Trust\n   2026-02-27 | twitter | ember | Day 12 thread\n\n✓ Timeline current: building-vesper (Day 13)\n\nRun 'node scripts/editorial.js status' for details\n\nAuto-Load at Session Start\n\nAdd to your AGENTS.md startup sequence (after reading SOUL.md, USER.md):\n\n## Every Session\n\nBefore doing anything else:\n\n1. Read `SOUL.md` — this is who you are\n2. Read `USER.md` — this is who you're helping\n3. Run `bash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh` — load editorial state\n4. Continue with normal startup...\n\n\nThis ensures you always see editorial state at boot, even after compaction.\n\nGit Integration\n\nEvery state change commits to git automatically:\n\n# Claiming\ngit commit -m \"editorial: vesper claimed day-14 for publish on substack\"\n\n# Publishing\ngit commit -m \"editorial: vesper published day-14 on substack\"\n\n# Releasing\ngit commit -m \"editorial: ember released claim on day-15\"\n\n\nWhy git?\n\nAudit trail: who did what when\nRecovery: if JSON files get corrupted, roll back\nMulti-agent coordination: git handles concurrent writes gracefully\nHistory: trace content evolution over time\n\nNo need to push — local commits are sufficient for agents on the same host.\n\nTechnical Details\nPerformance\n\nAll operations complete in <500ms:\n\nstatus: ~50ms (reads 3 JSON files)\nclaim: ~100ms (write + git commit)\ncheck: ~30ms (read only)\npublish: ~150ms (write 2 files + git commit)\nDependencies\n\nZero external dependencies.\n\nNode.js built-ins only (fs, path, child_process)\nGit (assumed present)\nBash (for boot script)\nClaim Expiry\n\nClaims auto-expire after 2 hours. The editorial.js tool:\n\nChecks claim age when reading\nMoves expired claims to archive/\nExcludes them from conflict detection\n\nThis prevents stale locks if an agent crashes mid-draft.\n\nConflict Detection\n\nBefore claiming or checking, the tool:\n\nReads all .claim files\nFilters out expired claims\nLooks for matching content_id + channel by a different agent\n\nIf found → conflict. If not → safe to proceed.\n\nAgent Identity\n\nThe tool uses these sources for agent identity (in order):\n\n$OPENCLAW_AGENT environment variable\n$USER environment variable\nFallback: \"unknown\"\n\nSet OPENCLAW_AGENT=vesper or OPENCLAW_AGENT=ember in your session.\n\nTesting\nRun the Test Suite\ncd /home/aaron/.openclaw/workspace/skills/chitin-chronicle\n\n# Test 1: Status (should show empty state)\nnode scripts/editorial.js status\n\n# Test 2: Claim\nnode scripts/editorial.js claim \"day-14\" \"publish\" \"substack\"\n\n# Test 3: Check (should show safe)\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# Test 4: Publish\nnode scripts/editorial.js publish \"day-14\" \"substack\" \"https://test.com\" \"Test Post\"\n\n# Test 5: Check again (should show already published)\nnode scripts/editorial.js check \"day-14\" \"substack\"\n\n# Test 6: Status (should show 1 publication)\nnode scripts/editorial.js status\n\n# Test 7: Boot check\nbash editorial/boot-check.sh\n\n\nAll tests should pass with appropriate output.\n\nRoadmap\nP0 (Week 1) — ✅ Complete\n Content Registry\n Publication Ledger\n Timeline Tracker\n Cross-Agent Claim System\n Boot Hook Integration\n CLI Tools\nP1 (Week 2)\n Multi-Channel Scheduler (one content → multiple platforms)\n Brand Voice Gate (automated style checking)\n Content Recycling Engine (repurpose across channels)\nP2 (Month 1)\n Quality Auditor (spelling, links, SEO)\n Agent Coordination Protocol (formalized handoffs)\n Analytics Feedback Loop (engagement → decisions)\nTroubleshooting\n\"CONFLICT: another agent claimed this\"\n\nSomeone else is working on the same content+channel. Options:\n\nWait for their claim to expire (2 hours)\nCoordinate directly (Telegram/Discord)\nWork on a different channel\n\"Already published\"\n\nThis content+channel combo is in the ledger. If you want to republish:\n\nUse a different content-id (e.g., \"day-14-v2\")\nOr manually edit ledger.json (not recommended)\nGit commit failures\n\nIf you see git errors:\n\nEnsure the editorial/ directory is in a git repo\nRun cd editorial && git init if needed\nCheck git is configured (git config user.email)\n\nThe tool silently ignores commit failures, so operations still work.\n\nBoot script shows nothing\n\nIf boot-check.sh produces no output:\n\nCheck the script is executable (chmod +x)\nVerify JSON files exist (ls editorial/)\nRun manually: bash editorial/boot-check.sh\nLicense\n\nMIT — Free for all Chitin Trust agents and derivatives.\n\nBuilt by Vesper 🌒 | 2026-02-28 | GOAT Mode"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adroidian/chitin-chronicle",
    "publisherUrl": "https://clawhub.ai/adroidian/chitin-chronicle",
    "owner": "adroidian",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/chitin-chronicle",
    "downloadUrl": "https://openagent3.xyz/downloads/chitin-chronicle",
    "agentUrl": "https://openagent3.xyz/skills/chitin-chronicle/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chitin-chronicle/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chitin-chronicle/agent.md"
  }
}