chitin-chronicle

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

The skill has a coherent publishing-coordination purpose, but its CLI builds shell commands and file paths from unvalidated inputs, which could let crafted content IDs or agent names execute local commands or write outside the intended claims folder.

Review the CLI implementation before installing. The concept is coherent, but the shell command and filename handling should be fixed before agents use untrusted or externally influenced content IDs, channels, actions, titles, or agent names. If you do install it, add the boot hook only if you want persistent startup summaries every session.

Findings (5)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

ConcernHigh Confidence
ASI05: Unexpected Code Execution
What this means

A malicious or malformed content ID, channel, action, or agent name could cause the agent to execute arbitrary local shell commands when it records a claim, release, or publication.

Why it was flagged

The git commit command is executed through a shell, and the commit message is built from values such as agent, contentId, action, and channel. Crafted values containing shell metacharacters could break out of the quoted commit message and run unintended local commands.

Skill content
execSync(`git -C ${EDITORIAL_DIR} commit -m "${message}"`, { stdio: 'ignore' });
Recommendation

Replace shell-string execSync calls with execFileSync or spawn using argument arrays, and validate or escape all user-controlled fields before using them in command arguments.

What this means

A crafted content ID or agent name could cause claim creation or release to write or move files outside the intended claims directory.

Why it was flagged

The claim filename is built directly from CLI-provided contentId and environment-derived agent values, then passed to path.join without restricting slashes, '..', or other path-control characters.

Skill content
const filename = `${contentId}-${agent}.claim`; const filepath = path.join(CLAIMS_DIR, filename); writeJSON(filepath, claim);
Recommendation

Restrict content IDs and agent names to a safe character set, reject path separators and '..', and verify the resolved path remains inside the claims directory before writing or renaming files.

What this means

The skill may fail or behave differently on systems without bash, Node.js, or git, even though those requirements are not declared in metadata.

Why it was flagged

The registry metadata declares no required binaries, while SKILL.md and README.md instruct use of bash and node, and scripts/editorial.js shells out to git.

Skill content
Required binaries (all must exist): none
Recommendation

Declare bash, node, and git as required binaries, or document clearly that the skill only works where those tools are available.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

If installed as documented, the boot-check script will run at the start of future agent sessions and display stored editorial state.

Why it was flagged

The skill asks the user to add a boot-time script to the agent startup sequence. This is disclosed and consistent with the stated boot-time awareness feature, but it is a persistence mechanism.

Skill content
Add this line to your `AGENTS.md` startup section: `bash /home/aaron/.openclaw/workspace/skills/chitin-chronicle/editorial/boot-check.sh`
Recommendation

Only add the boot hook if you want this behavior every session, and remove the AGENTS.md line if you no longer use the skill.

What this means

Editorial titles or claim names stored by one agent can reappear in later sessions; if those fields contain instructions, an agent might mistake them for guidance rather than data.

Why it was flagged

The boot hook prints stored ledger titles into the agent's startup context. Titles are supplied through the publish command and may contain arbitrary text.

Skill content
console.log(`   ${date} | ${e.channel} | ${e.author} | ${e.title}`);
Recommendation

Treat ledger, registry, and claim contents as untrusted data in prompts, and consider sanitizing or labeling displayed fields so they are not interpreted as instructions.