openclaw 网盘下载
OpenClaw

技能详情(站内镜像,无评论)

首页 > 技能库 > chitin-chronicle

Coordinates multi-agent content publishing by preventing duplicates, tracking timeline, managing claims, and recording immutable publication history with git...

效率与工具

许可证:MIT-0

MIT-0 ·免费使用、修改和重新分发。无需归因。

版本:v1.0.0

统计:⭐ 0 · 220 · 0 current installs · 0 all-time installs

0

安装量(当前) 0

🛡 VirusTotal :可疑 · OpenClaw :良性

Package:adroidian/chitin-chronicle

安全扫描(ClawHub)

  • VirusTotal :可疑
  • OpenClaw :良性

OpenClaw 评估

The skill's code and runtime instructions are coherent with its stated purpose (local, git-backed multi-agent editorial coordination), but there are minor documentation and provenance inconsistencies you should review before installing.

目的

The skill implements a local, git-backed claim/ledger/registry system which matches the described purpose. Minor mismatches: the registry metadata and some docs refer to 'chitin-chronicle' vs 'chitin-editorial' (inconsistent naming), and SKILL.md examples use an absolute user path (/home/aaron/...) while the scripts use relative __dirname. The skill executes git commands but 'required binaries' in the registry metadata list none — git (and Nod…

说明范围

Runtime instructions and the CLI operate only on files inside the skill's editorial/ directory (claims, ledger, registry, timeline). The SKILL.md asks you to add a boot-check script to your AGENTS.md startup sequence and to set OPENCLAW_AGENT; the code reads that env var (falling back to USER). The instructions do not request remote endpoints or unrelated system files. Note: SKILL.md examples reference a specific home path which you should ada…

安装机制

This is an instruction-only skill with included scripts; there is no network download or package installation step. All code is local and uses Node.js built-ins and bash. That is lower risk than arbitrary installs.

证书

The skill does not declare or require secrets or external credentials. It uses OPENCLAW_AGENT or USER to identify the agent, which is reasonable for its purpose. No unrelated environment variables, keys, or config paths are requested.

持久

The skill is not force-installed (always:false) and can be invoked by the agent. It writes state to files in its own editorial/ directory and runs local git commits (execSync). Because it performs git operations, if that editorial directory contains a .git repository with hooks, those hooks could execute arbitrary code during commits — inspect any included .git before use. The skill suggests adding a boot hook to AGENTS.md (user opt-in), which…

综合结论

This skill appears to do what it says: local, file-based coordination and an append-only ledger. Before installing: 1) Verify Node.js and git are available on the host (the metadata did not declare git but the scripts call git). 2) Inspect the skill directory, especially any .git directory, for suspicious git hooks or unexpected files — git commits in the skill will exercise those hooks. 3) Update any absolute paths in the docs (e.g., /home/aa…

安装(复制给龙虾 AI)

将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。

请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「chitin-chronicle」。简介:Coordinates multi-agent content publishing by preventing duplicates, tracking t…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/adroidian/chitin-chronicle/SKILL.md
(来源:yingzhi8.cn 技能库)

SKILL.md

打开原始 SKILL.md(GitHub raw)

# 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:

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

---

## Quick Start

### 1. Add to Boot Sequence

Add this line to your `AGENTS.md` startup section:

```bash
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

```bash
# 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

```bash
# 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

```bash
# 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

---

## CLI Reference

### `editorial status`

Show current editorial state:
- Active claims
- Recent publications (48h)
- Timeline status
- Summary counts

```bash
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:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "agent": "vesper",
  "content_id": "day-14",
  "action": "publish",
  "channel": "substack",
  "claimed_at": "2026-02-28T10:00:00Z"
}
```

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

---

## Workflow

### Typical Publishing Flow

```bash
# 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:**
```bash
node scripts/editorial.js claim "day-14" "publish" "substack"
```

**Ember** (later, checks status):
```bash
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

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

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

---

## Boot Hook Integration

### Manual Boot Check

Run the boot script anytime:

```bash
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):

```markdown
## 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:

```bash
# 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.

---

## Technical Details

### 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:
1. Checks claim age when reading
2. Moves expired claims to `archive/`
3. Excludes them from conflict detection

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

### Conflict Detection

Before claiming or checking, the tool:
1. Reads all `.claim` files
2. Filters out expired claims
3. 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):
1. `$OPENCLAW_AGENT` environment variable
2. `$USER` environment variable
3. Fallback: `"unknown"`

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

---

## Testing

### Run the Test Suite

```bash
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.

---

## Roadmap

### P0 (Week 1) — ✅ Complete

- [x] Content Registry
- [x] Publication Ledger
- [x] Timeline Tracker
- [x] Cross-Agent Claim System
- [x] Boot Hook Integration
- [x] 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)

---

## Troubleshooting

### "CONFLICT: another agent claimed this"

Someone else is working on the same content+channel. Options:
1. Wait for their claim to expire (2 hours)
2. Coordinate directly (Telegram/Discord)
3. Work on a different channel

### "Already published"

This content+channel combo is in the ledger. If you want to republish:
1. Use a different `content-id` (e.g., "day-14-v2")
2. Or manually edit `ledger.json` (not recommended)

### Git commit failures

If you see git errors:
1. Ensure the `editorial/` directory is in a git repo
2. Run `cd editorial && git init` if needed
3. 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:
1. Check the script is executable (`chmod +x`)
2. Verify JSON files exist (`ls editorial/`)
3. 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**