agentsclimarketplace

Exact rendered decision journaling

Skill ychampion/cskill-agents/skills/exact-rendered-decision-journaling

Journal each per-message tool result replacement so resume logic replays the exact preview the model saw.From its SKILL.md

Install
npx -y skills add ychampion/cskill-agents --skill exact-rendered-decision-journaling

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

2.5 KB, 499 tokens by cl100k_base, as published. Nobody here has run it

SKILL: Exact Rendered Decision Journaling

Domain: tool-orchestration
Trigger: Apply whenever per-message budgeting rewrites tool_result content so transcripts capture the preview string and resume logic can reapply the same decisions. Source Pattern: Distilled from reviewed tool-loop and result-shaping patterns.

Core Method

After enforceToolResultBudget persists a candidate, produce a ToolResultReplacementRecord (kind: 'tool-result', toolUseId, replacement) that stores the literal preview returned by buildLargeToolResultMessage. Pass newlyReplaced to the writeToTranscript callback so every replacement is serialized in the conversation transcript; later, reconstructContentReplacementState(messages, records, inheritedReplacements) can rebuild the same seenIds/replacements map, and provisionContentReplacementState gates the feature flag (tengu_hawthorn_steeple) so journaling stays optional.

Key Rules

  • Persist the exact preview string the model consumed—the replacement record must not approximate or trim the visible content, or prompt-cache alignment breaks.
  • Include toolUseId with each record so resume enforcement can quickly look up replacements without re-running persistence.
  • Forward parentState.replacements into reconstructForSubagentResume when resuming forks so inherited decisions reapply exactly.
  • Guard writeToTranscript; it may be undefined in ephemeral contexts, so only call it when provided.
  • When the flag is disabled, provisionContentReplacementState should return undefined and journaling remains inert.

Example Application

In the query loop pass the transcript writer to applyToolResultBudget; the callback serializes newlyReplaced records, which are later replayed by provisionContentReplacementState(initialMessages, records) during resume so the budget enforces the same replacements it originally made.

Anti-Patterns (What NOT to do)

  • Do not journal before persistToolResult succeeds and the preview is built—the replacement string must exist before you write it down.
  • Do not drop kind: 'tool-result' or the toolUseId fields; reconstructContentReplacementState relies on them to filter and lookup.
  • Avoid journaling duplicates (e.g., from re-applied replacements); only persist what is new so transcripts stay minimal.

What ships with it: 1 file

925 B alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.