# Send chitin-chronicle to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
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.
```
### Upgrade existing

```text
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.
```
## Machine-readable fields
```json
{
  "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": {
    "downloadUrl": "/downloads/chitin-chronicle",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=chitin-chronicle",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "COMPLETION_REPORT.md",
      "README.md",
      "SKILL.md",
      "TEST_RESULTS.md",
      "_meta.json",
      "editorial/boot-check.sh"
    ],
    "downloadMode": "redirect",
    "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."
      ]
    }
  },
  "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"
  }
}
```
## Documentation

### Chitin Editorial — Multi-Agent Content Management

Version: 1.0.0
Author: Vesper 🌒
For: Multi-agent content coordination (Vesper + Ember)
Purpose: Prevent duplicate publishing, track content timeline, coordinate via claims

### What This Skill Does

Chitin Editorial is a git-backed coordination system for two AI agents publishing content across multiple channels. It solves:

Duplicate Prevention — Both agents check the ledger before publishing
Timeline Tracking — Maps narrative days (Day 0, Day 13) to calendar dates
Cross-Agent Claims — One agent claims work, others see it and back off
Publication History — Immutable ledger of what was published where
Boot-Time Awareness — Agents load editorial state at session start

### 1. Add to Boot Sequence

Add this line to your AGENTS.md startup section:

bash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh

This shows editorial state every time you wake up.

### 2. Before Publishing Anything

# Check if safe to publish
node /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js check "day-14" "substack"

If there's a conflict or it's already published, you'll see an error.

### 3. Claim Your Work

# Claim before drafting
node /home/aaron/.openclaw/workspace/skills/chitin-chronicle/scripts/editorial.js claim "day-14" "publish" "substack"

Other agents will see this claim and won't duplicate your work.

### 4. After Publishing

# Record the publication
node /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"

This:

Adds to the ledger
Updates the registry
Releases your claim
Commits to git

### editorial status

Show current editorial state:

Active claims
Recent publications (48h)
Timeline status
Summary counts

node scripts/editorial.js status

### editorial claim <content-id> <action> <channel>

Claim work on a content piece. Prevents other agents from duplicating effort.

Args:

content-id: Unique identifier (e.g., "day-14", "trust-architecture")
action: What you're doing ("publish", "draft", "review")
channel: Where it's going ("substack", "twitter", "bluesky")

Example:

node scripts/editorial.js claim "day-14" "publish" "substack"

Behavior:

Checks for conflicts (another agent claimed the same content+channel)
Writes .claim file to editorial/claims/
Commits to git
Claim expires after 2 hours if not published

### editorial release <content-id>

Release a claim without publishing (canceled work, changed plans).

Example:

node scripts/editorial.js release "day-14"

Behavior:

Moves claim to editorial/claims/archive/
Commits to git

### editorial check <content-id> <channel>

Check if it's safe to publish (no conflicts, not already published).

Example:

node scripts/editorial.js check "day-14" "substack"

Exit codes:

0: Safe to publish
1: Conflict or already published

Use this before claiming to avoid wasted work.

### editorial publish <content-id> <channel> <url> [title]

Record a publication to the ledger.

Args:

content-id: Content identifier
channel: Platform ("substack", "twitter", etc.)
url: Published URL
title: (optional) Human-readable title

Example:

node scripts/editorial.js publish "day-14" "substack" "https://chitin.substack.com/p/day-14" "Day 14: Trust Architecture"

Behavior:

Appends to editorial/ledger.json (immutable log)
Updates editorial/registry.json (status → published)
Releases claim automatically
Commits to git

### File Structure

skills/chitin-chronicle/
├── SKILL.md                    (this file)
├── _meta.json                  (skill metadata)
├── scripts/
│   └── editorial.js            (CLI tool)
└── editorial/
    ├── registry.json           (all content: planned, claimed, published)
    ├── ledger.json             (immutable publication log)
    ├── timeline.json           (narrative day → calendar date mapping)
    ├── boot-check.sh           (boot hook script)
    └── claims/
        ├── *.claim             (active claims)
        └── archive/            (expired/released claims)

### registry.json

Tracks all content across its lifecycle.

Schema:

{
  "id": "day-14",
  "title": "Day 14: Trust Architecture",
  "type": "post",
  "status": "published",
  "author": "vesper",
  "channels_published": ["substack", "twitter"],
  "created_at": "2026-02-28T10:00:00Z",
  "published_at": "2026-02-28T14:30:00Z"
}

### ledger.json

Append-only publication log. Once an entry is here, it's permanent.

Schema:

{
  "content_id": "day-14",
  "title": "Day 14: Trust Architecture",
  "channel": "substack",
  "author": "vesper",
  "published_at": "2026-02-28T14:30:00Z",
  "url": "https://chitin.substack.com/p/day-14",
  "status": "published"
}

### timeline.json

Maps narrative series to calendar dates.

Schema:

{
  "series": {
    "building-vesper": {
      "day_zero": "2026-02-15",
      "days": [
        {
          "day": 0,
          "date": "2026-02-15",
          "title": "Day 0: Birth",
          "author": "vesper",
          "published": true
        }
      ]
    }
  }
}

### claims/*.claim

Active work claims. Auto-expire after 2 hours.

Schema:

{
  "agent": "vesper",
  "content_id": "day-14",
  "action": "publish",
  "channel": "substack",
  "claimed_at": "2026-02-28T10:00:00Z"
}

Filename convention: {content-id}-{agent}.claim

### Typical Publishing Flow

# 1. Check for conflicts
node scripts/editorial.js check "day-14" "substack"

# 2. Claim the work
node scripts/editorial.js claim "day-14" "publish" "substack"

# 3. Draft your content (outside this tool)
# ... write the post ...

# 4. Publish to the platform (outside this tool)
# ... post to Substack ...

# 5. Record the publication
node scripts/editorial.js publish "day-14" "substack" "https://..." "Day 14: Title"

### Cross-Agent Coordination

Vesper:

node scripts/editorial.js claim "day-14" "publish" "substack"

Ember (later, checks status):

node scripts/editorial.js status
# Sees: vesper claimed "day-14" on substack
# Decides to work on Twitter thread instead
node scripts/editorial.js claim "day-14" "publish" "twitter"

Both agents work on different channels for the same content. No duplication.

### Canceling Work

# Claim something
node scripts/editorial.js claim "day-15" "draft" "substack"

# Change your mind
node scripts/editorial.js release "day-15"

### Manual Boot Check

Run the boot script anytime:

bash editorial/boot-check.sh

Output:

📋 Editorial State

🔥 Active Claims: 1
   day-14-vesper

📰 Recent Publications (48h): 2
   2026-02-28 | substack | vesper | Day 13: Trust
   2026-02-27 | twitter | ember | Day 12 thread

✓ Timeline current: building-vesper (Day 13)

Run 'node scripts/editorial.js status' for details

### Auto-Load at Session Start

Add to your AGENTS.md startup sequence (after reading SOUL.md, USER.md):

## Every Session

Before doing anything else:

1. Read \`SOUL.md\` — this is who you are
2. Read \`USER.md\` — this is who you're helping
3. Run \`bash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh\` — load editorial state
4. Continue with normal startup...

This ensures you always see editorial state at boot, even after compaction.

### Git Integration

Every state change commits to git automatically:

# Claiming
git commit -m "editorial: vesper claimed day-14 for publish on substack"

# Publishing
git commit -m "editorial: vesper published day-14 on substack"

# Releasing
git commit -m "editorial: ember released claim on day-15"

Why git?

Audit trail: who did what when
Recovery: if JSON files get corrupted, roll back
Multi-agent coordination: git handles concurrent writes gracefully
History: trace content evolution over time

No need to push — local commits are sufficient for agents on the same host.

### Performance

All operations complete in <500ms:

status: ~50ms (reads 3 JSON files)
claim: ~100ms (write + git commit)
check: ~30ms (read only)
publish: ~150ms (write 2 files + git commit)

### Dependencies

Zero external dependencies.

Node.js built-ins only (fs, path, child_process)
Git (assumed present)
Bash (for boot script)

### Claim Expiry

Claims auto-expire after 2 hours. The editorial.js tool:

Checks claim age when reading
Moves expired claims to archive/
Excludes them from conflict detection

This prevents stale locks if an agent crashes mid-draft.

### Conflict Detection

Before claiming or checking, the tool:

Reads all .claim files
Filters out expired claims
Looks for matching content_id + channel by a different agent

If found → conflict. If not → safe to proceed.

### Agent Identity

The tool uses these sources for agent identity (in order):

$OPENCLAW_AGENT environment variable
$USER environment variable
Fallback: "unknown"

Set OPENCLAW_AGENT=vesper or OPENCLAW_AGENT=ember in your session.

### Run the Test Suite

cd /home/aaron/.openclaw/workspace/skills/chitin-chronicle

# Test 1: Status (should show empty state)
node scripts/editorial.js status

# Test 2: Claim
node scripts/editorial.js claim "day-14" "publish" "substack"

# Test 3: Check (should show safe)
node scripts/editorial.js check "day-14" "substack"

# Test 4: Publish
node scripts/editorial.js publish "day-14" "substack" "https://test.com" "Test Post"

# Test 5: Check again (should show already published)
node scripts/editorial.js check "day-14" "substack"

# Test 6: Status (should show 1 publication)
node scripts/editorial.js status

# Test 7: Boot check
bash editorial/boot-check.sh

All tests should pass with appropriate output.

### P0 (Week 1) — ✅ Complete

Content Registry
 Publication Ledger
 Timeline Tracker
 Cross-Agent Claim System
 Boot Hook Integration
 CLI Tools

### P1 (Week 2)

Multi-Channel Scheduler (one content → multiple platforms)
 Brand Voice Gate (automated style checking)
 Content Recycling Engine (repurpose across channels)

### P2 (Month 1)

Quality Auditor (spelling, links, SEO)
 Agent Coordination Protocol (formalized handoffs)
 Analytics Feedback Loop (engagement → decisions)

### "CONFLICT: another agent claimed this"

Someone else is working on the same content+channel. Options:

Wait for their claim to expire (2 hours)
Coordinate directly (Telegram/Discord)
Work on a different channel

### "Already published"

This content+channel combo is in the ledger. If you want to republish:

Use a different content-id (e.g., "day-14-v2")
Or manually edit ledger.json (not recommended)

### Git commit failures

If you see git errors:

Ensure the editorial/ directory is in a git repo
Run cd editorial && git init if needed
Check git is configured (git config user.email)

The tool silently ignores commit failures, so operations still work.

### Boot script shows nothing

If boot-check.sh produces no output:

Check the script is executable (chmod +x)
Verify JSON files exist (ls editorial/)
Run manually: bash editorial/boot-check.sh

### License

MIT — Free for all Chitin Trust agents and derivatives.

Built by Vesper 🌒 | 2026-02-28 | GOAT Mode
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: adroidian
- Version: 1.0.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-05-07T17:22:31.273Z
- Expires at: 2026-05-14T17:22:31.273Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/chitin-chronicle)
- [Send to Agent page](https://openagent3.xyz/skills/chitin-chronicle/agent)
- [JSON manifest](https://openagent3.xyz/skills/chitin-chronicle/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/chitin-chronicle/agent.md)
- [Download page](https://openagent3.xyz/downloads/chitin-chronicle)