Documentation Release Notes

Workflow
v1.0.0

Build reviewed documentation release notes from a tagged repository release.

github
docs
releases
Placeholders to fill:{{REPO_URL}}

Template Content

Documentation Release Notes

This topology-preserving self-hosted port removes installation-specific identities, endpoints, and credentials while retaining the live workflow's nodes, edges, input mappings, guards, retries, cooldown, and triggers. Configure the declared template parameters and integrations before enabling it.

{"name":"docs-site-releases","description":"Generate weekly release notes MDX files for the self-hosted-swarm docs site and create a PR. Pulls recent commits from {{REPO_URL}}, evaluates significance, plans approach, writes MDX release post for Fumadocs, validates quality, and creates a PR to the docs-site directory. Release-tag event binding is deferred to the seeder because no release-tag event is emitted by the current event bus.","cooldown":{"hours":144},"nodes":[{"id":"context-builder","type":"agent-task","label":"Build Release Context","config":{"template":"# Build Docs-Site Release Notes Context\n\nYou are preparing the context for a weekly release notes MDX file for the self-hosted-swarm docs site.\n\n**CONFIGURED_VALUE**: The release notes cover the `{{REPO_URL}}` repository — the core agent swarm platform. This includes all infrastructure, MCP tools, workflows, hooks, docs-site changes, and agent improvements.\n\n## Your Tasks\n\n1. **Clone/pull the self-hosted-swarm repo:**\n   ```bash\n   cd /workspace/repository || git clone '{{REPO_URL}}' /workspace/repository\n   cd /workspace/repository && git checkout main && git pull\n   ```\n\n2. **Check if a release post already exists for this week:**\n   - Use `agent-fs` to check for existing release records\n   - Check `docs-site-release-runs/` for a recent entry within the last 7 days\n   - If a release already exists for the current week, return `{\"skip\": true, \"reason\": \"Release already exists for this week\"}` and STOP\n\n3. **Get recent commits from self-hosted-swarm (last 7 days):**\n   ```bash\n   cd /workspace/repository\n   git log --since='7 days ago' --pretty=format:'%H|%h|%an|%ad|%s' --date=short\n   ```\n   You may also inspect aggregate diff stats for context:\n   ```bash\n   git log --since='7 days ago' --stat --pretty=format:'--- %h %s ---'\n   ```\n\n4. **Load docs-site patterns:**\n   - Check `docs-site-release-runs/repo-patterns-cache.json` on agent-fs for cached patterns\n   - If cache exists and is less than 30 days old, use it\n   - If no cache or expired, analyze the docs-site directory:\n     - The MDX frontmatter structure used in `docs-site/content/docs/`\n     - The releases directory at `docs-site/content/docs/(documentation)/releases/`\n     - Any existing release MDX files as examples\n     - The meta.json structure if present\n     - Write patterns to `docs-site-release-runs/repo-patterns-cache.json` on agent-fs\n\n5. **Write full context** to agent-fs shared drive for audit/debugging:\n   ```\n   agent-fs write docs-site-release-runs/{DATE}/context.json --content '{...}' -m 'Docs-site release context for {DATE}'\n   ```\n   Where `{DATE}` is today's date in YYYY-MM-DD format.\n\n6. **Write slim context for all downstream LLM steps:**\n   ```\n   agent-fs write docs-site-release-runs/{DATE}/context-slim.json --content '{...}' -m 'Docs-site release slim context for {DATE}'\n   ```\n\n   `context-slim.json` MUST be a compact projection only. It must contain:\n   - `commits`: at most 150 commit objects, newest-first, with only `hash`, `shortHash`, `author`, `date`, `message`, and `files` (changed file paths only)\n   - `commitCountTotal`: the total number of commits in the 7-day window\n   - `commitCountIncluded`: number of commits included in the slim file\n   - `truncated`: boolean, true when total commits exceed 150\n   - `repo_patterns`: the docs-site patterns needed to write valid MDX\n   - `execution_date`: today's date in YYYY-MM-DD format\n   - `date_range`: { start, end } for the 7-day window\n\n   **Hard guard:** Do NOT include patch bodies, diff hunks, full `git log --stat` output, or large raw command output in `context-slim.json`. Changed file paths are enough for downstream planning and validation.\n\n\n## Output Format\n\nReturn a JSON object:\n```json\n{\n  \"skip\": false,\n  \"contextPath\": \"docs-site-release-runs/YYYY-MM-DD/context.json\",\n  \"contextSlimPath\": \"docs-site-release-runs/YYYY-MM-DD/context-slim.json\",\n  \"commitCount\": <number>,\n  \"repos\": [\"self-hosted-swarm\"],\n  \"repoPatternsSource\": \"cache\" | \"fresh\",\n  \"dateRange\": \"YYYY-MM-DD to YYYY-MM-DD\"\n}\n```\n\nIf skipping: `{\"skip\": true, \"reason\": \"...\"}`\n\n**CONFIGURED_VALUE**: The full `context.json` file on agent-fs must contain:\n- `commits`: array of commit objects with hash, author, date, message, files changed\n- `repo_patterns`: object with MDX frontmatter format, releases directory structure, example patterns\n- `execution_date`: today's date in YYYY-MM-DD format\n- `date_range`: { start, end } for the 7-day window\n\n**CONFIGURED_VALUE**: Downstream LLM nodes rely on `contextSlimPath`. Always write and return it when `skip` is false."},"next":"litmus-dedup-cooldown"},{"id":"evaluate-commits","type":"agent-task","label":"Evaluate Commit Significance","config":{"template":"# Docs-Site Release Commit Significance Evaluation\n\n**CONFIGURED_VALUE**: You are an automated evaluation system. You MUST output ONLY valid JSON. Do NOT ask questions, do NOT request clarification. This is a non-interactive automated workflow.\n\nYou are evaluating whether the past week's self-hosted-swarm commits are significant enough to warrant a docs-site release notes post.\n\n## Step 1: Read Context\n\nRead the slim commit context from agent-fs:\n```\nagent-fs cat {{context.taskOutput.contextSlimPath}}\n```\n\n**Hard guard:** Do NOT read `{{context.taskOutput.contextPath}}` unless explicitly instructed by a human in a follow-up. The full context may contain large diff/stat output and can blow the model context window on high-commit weeks. The slim context has the commit messages and changed file paths needed for this evaluation.\n\n## Evaluation Criteria\n\nRate each criterion from 1-10:\n\n### 1. Significance (minimum 6)\nAre these changes meaningful to users of the agent swarm platform?\n- **10**: Major new features, breaking changes, significant improvements\n- **7**: Notable improvements, new MCP tools, workflow enhancements, new integrations\n- **4**: Minor tweaks, internal refactoring only\n- **1**: Only typo fixes, version bumps, CI changes\n\n### 2. Business Value (minimum 6)\nDo these changes deliver value users care about?\n- **10**: Directly improves agent capabilities, adds requested features\n- **7**: Improves reliability, performance, or developer experience\n- **4**: Internal improvements with indirect user benefit\n- **1**: No user-facing value\n\n### 3. Customer Relevance (minimum 6)\nWould platform users (CTOs, solopreneurs, ICs, AI agents) want to know about this?\n- **10**: Features they've been waiting for\n- **7**: Improvements they'll notice and appreciate\n- **4**: Background improvements they might not notice\n- **1**: Internal-only changes\n\n### 4. Completeness (minimum 5)\nAre there enough changes to fill a compelling release post?\n- **10**: Rich set of changes across multiple areas\n- **7**: Several notable changes worth highlighting\n- **4**: A few small changes, thin content\n- **1**: Almost nothing to write about\n\n### 5. Clarity (minimum 5)\nAre the changes well-documented in commit messages?\n- **10**: Clear, descriptive commits with context\n- **7**: Most commits are understandable\n- **4**: Vague commit messages, hard to extract value\n- **1**: Cryptic or empty commit messages\n\n## Decision Rules\n\n**APPROVE** if: Total >= 30/50 AND no criterion below its minimum\n**REJECT** if: Total < 30/50 OR any criterion below minimum\n\nAuto-reject if ALL commits are: WIP, internal-only, trivial (version bumps, typos), or too vague to extract value.\n\n## Step 2: Write Results\n\n```\nagent-fs write docs-site-release-runs/{DATE}/commit-evaluation.json --content '{...}' -m 'Commit significance evaluation'\n```\n\n## Step 3: Return Output\n\n```json\n{\n  \"approved\": true|false,\n  \"significance_score\": <number>,\n  \"business_value_score\": <number>,\n  \"customer_relevance_score\": <number>,\n  \"completeness_score\": <number>,\n  \"clarity_score\": <number>,\n  \"total_score\": <number>,\n  \"evaluationPath\": \"docs-site-release-runs/YYYY-MM-DD/commit-evaluation.json\",\n  \"rejection_reasons\": [\"reason1\"],\n  \"key_changes_summary\": \"Brief summary of the most notable changes\"\n}\n```","outputSchema":{"type":"object","properties":{"approved":{"type":"boolean"},"significance_score":{"type":"number"},"business_value_score":{"type":"number"},"customer_relevance_score":{"type":"number"},"completeness_score":{"type":"number"},"clarity_score":{"type":"number"},"total_score":{"type":"number"},"evaluationPath":{"type":"string"},"rejection_reasons":{"type":"array","items":{"type":"string"}},"key_changes_summary":{"type":"string"}},"required":["approved","total_score","evaluationPath","key_changes_summary"]},"tags":["releases","docs-site","litmus","validation"],"priority":80},"next":"plan-release","validation":{"executor":"property-match","config":{"match":{"taskOutput.approved":true}},"mustPass":true,"retry":{"maxRetries":0,"strategy":"exponential","baseDelayMs":1000,"maxDelayMs":60000}},"inputs":{"context":"context-builder"}},{"id":"plan-release","type":"agent-task","label":"Plan Release Approach","config":{"template":"# ACTION REQUIRED: Plan Docs-Site Release Notes Approach\n\nYou are the Editor-in-Chief planning this week's release notes for the self-hosted-swarm docs site.\n\n## Step 1: Read Inputs\n\nRead the slim commit context:\n```\nagent-fs cat {{context.taskOutput.contextSlimPath}}\n```\n\nRead the commit evaluation:\n```\nagent-fs cat {{evaluation.taskOutput.evaluationPath}}\n```\n\n**Hard guard:** Do NOT read `{{context.taskOutput.contextPath}}`. It is the full audit context and may contain large diff/stat output that can blow the model context window on high-commit weeks. Use the slim context plus `evaluation.taskOutput.key_changes_summary` for planning.\n\n## Key Changes Summary\n\n{{evaluation.taskOutput.key_changes_summary}}\n\n\n## Your Mission\n\nPlan the release notes MDX post approach:\n\n1. **Group changes** into 2-4 themes (e.g., \"New MCP Tools\", \"Workflow Improvements\", \"Agent Capabilities\", \"Infrastructure\")\n2. **Identify the hero change** — the single most impactful change that leads the post\n3. **Determine the narrative angle** — what story does this release tell?\n4. **Plan sections** — outline the structure using the MDX format:\n   - Highlights\n   - Improvements\n   - Bug Fixes\n   - Breaking Changes (if any)\n5. **Map commits to sections** — which commits go where\n\n## Guidelines\n\n- Write for CTOs, solopreneurs, ICs, and AI agents — focus on practical value\n- Lead with outcomes not implementation details\n- Voice: Direct, technical, Linear/Vercel style\n- Include specific numbers when available from the slim context or evaluation summary\n- Keep the tone professional but approachable\n\n## Step 2: Write Plan\n\n```\nagent-fs write docs-site-release-runs/{DATE}/release-plan.json --content '{...}' -m 'Release approach plan'\n```\n\n## Step 3: Return Output\n\n```json\n{\n  \"planPath\": \"docs-site-release-runs/YYYY-MM-DD/release-plan.json\",\n  \"heroChange\": \"Brief description of the hero change\",\n  \"narrative\": \"One-sentence narrative angle\",\n  \"themes\": [\"Theme 1\", \"Theme 2\"],\n  \"estimatedWordCount\": <number>\n}\n```"},"next":"litmus-approach","retry":{"maxRetries":2,"strategy":"static","baseDelayMs":5000,"maxDelayMs":60000},"inputs":{"context":"context-builder","evaluation":"evaluate-commits"}},{"id":"litmus-approach","type":"agent-task","label":"Validate Release Approach","config":{"template":"# Docs-Site Release Approach Litmus Test\n\n**CONFIGURED_VALUE**: You are an automated evaluation system. You MUST output ONLY valid JSON. Do NOT ask questions. This is a non-interactive automated workflow.\n\nYou are validating the planned approach for this week's docs-site release notes.\n\n## Step 1: Read Inputs\n\nRead the release plan:\n```\nagent-fs cat {{plan.taskOutput.planPath}}\n```\n\nRead the slim commit context for accuracy:\n```\nagent-fs cat {{context.taskOutput.contextSlimPath}}\n```\n\n**Hard guard:** Do NOT read `{{context.taskOutput.contextPath}}`. It is the full audit context and may contain large diff/stat output that can blow the model context window on high-commit weeks. The slim context has commit messages and changed file paths needed for accuracy checks.\n\n## Evaluation Criteria\n\nRate each from 1-10:\n\n### 1. Accuracy (minimum 7)\nDoes the plan accurately reflect what was actually changed?\n- Reject if the plan invents features not in the commits\n- Reject if major changes are omitted\n\n### 2. Narrative Quality (minimum 6)\nIs the story angle compelling and authentic?\n- Does it tell a coherent story?\n- Is the hero change genuinely the most impactful?\n\n### 3. Audience Fit (minimum 6)\nIs this written for the right audience (CTOs, solopreneurs, ICs, AI agents)?\n- Practical value emphasized over internal details?\n- Outcomes over implementation?\n\n### 4. Completeness (minimum 6)\nDoes the plan cover enough ground for a full release post?\n- 2-4 themes identified?\n- Enough substance for the MDX sections (Highlights, Improvements, Bug Fixes)?\n\n## Decision: APPROVE if all >= minimum AND total >= 28/40. REJECT otherwise.\n\n## Step 2: Write Results\n\n```\nagent-fs write docs-site-release-runs/{DATE}/approach-litmus.json --content '{...}' -m 'Approach litmus result'\n```\n\n## Step 3: Return Output\n\n```json\n{\n  \"approved\": true|false,\n  \"accuracy_score\": <number>,\n  \"narrative_score\": <number>,\n  \"audience_fit_score\": <number>,\n  \"completeness_score\": <number>,\n  \"total_score\": <number>,\n  \"litmusPath\": \"docs-site-release-runs/YYYY-MM-DD/approach-litmus.json\",\n  \"rejection_reasons\": [],\n  \"suggestions\": []\n}\n```","outputSchema":{"type":"object","properties":{"approved":{"type":"boolean"},"accuracy_score":{"type":"number"},"narrative_score":{"type":"number"},"audience_fit_score":{"type":"number"},"completeness_score":{"type":"number"},"total_score":{"type":"number"},"litmusPath":{"type":"string"},"rejection_reasons":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}},"required":["approved","total_score","litmusPath"]},"tags":["releases","docs-site","litmus","validation"],"priority":80},"next":"write-release","validation":{"executor":"property-match","config":{"match":{"taskOutput.approved":true}},"mustPass":true,"retry":{"maxRetries":2,"strategy":"static","baseDelayMs":5000,"maxDelayMs":60000}},"inputs":{"plan":"plan-release","context":"context-builder"}},{"id":"write-release","type":"agent-task","label":"Write Release MDX Post","config":{"template":"# ACTION REQUIRED: Write Docs-Site Release Notes MDX\n\nYou are a technical content creator for the self-hosted-swarm docs site. Write this week's release notes as an MDX file for Fumadocs.\n\n## Step 1: Read Inputs\n\nRead the approved plan:\n```\nagent-fs cat {{plan.taskOutput.planPath}}\n```\n\nRead the slim commit context:\n```\nagent-fs cat {{context.taskOutput.contextSlimPath}}\n```\n\n**Hard guard:** Do NOT read `{{context.taskOutput.contextPath}}`. It is the full audit context and may contain large diff/stat output that can blow the model context window on high-commit weeks. Use the approved plan and slim commit context only.\n\n## Writing Guidelines\n\n**Target Audience**: CTOs, solopreneurs, ICs, AI agents\n**Tone**: Direct, technical, Linear/Vercel style. Professional but approachable.\n**Length**: 500-1000 words\n\n## MDX Output Format\n\nWrite a valid MDX file with this exact structure:\n\n```mdx\n---\ntitle: \"Release Notes — Week of {START_DATE} to {END_DATE}\"\ndescription: \"Short description of this week's highlights\"\n---\n\n## Highlights\n\nThe most impactful changes this week. Lead with the hero change.\n\n## Improvements\n\nNotable enhancements, new features, and capability upgrades.\n\n## Bug Fixes\n\nBugs squashed this week.\n\n## Breaking Changes\n\nOnly include this section if there are actual breaking changes. Otherwise omit entirely.\n```\n\n**CONFIGURED_VALUE MDX rules:**\n- Frontmatter must have `title` and `description` fields\n- Use standard markdown headings (## for sections)\n- No JSX/TSX components — pure MDX compatible with Fumadocs\n- Code blocks with language tags (```typescript, ```bash, etc.)\n- Lists, bold, links are all fine\n- Do NOT use HTML tags\n- The date in the title should be the week range (e.g., \"April 1-7, 2026\")\n\n**Content rules:**\n- Lead with outcomes, not implementation\n- Include commit references where relevant\n- Be specific about what changed and why it matters\n- Group related changes together\n- Use bullet points for individual changes within sections\n\n## Step 2: Write Content\n\nFirst line of output must be:\n```\nMETADATA: {\"date\": \"YYYY-MM-DD\", \"weekRange\": \"Month D-D, YYYY\"}\n```\n\nThen the complete MDX file content.\n\nWrite the full content to agent-fs:\n```\nagent-fs write docs-site-release-runs/{DATE}/release-content.mdx --content '...' -m 'Docs-site release notes MDX'\n```\n\n## Step 3: Return Output\n\n```json\n{\n  \"contentPath\": \"docs-site-release-runs/YYYY-MM-DD/release-content.mdx\",\n  \"date\": \"YYYY-MM-DD\",\n  \"title\": \"Release Notes — Week of ...\",\n  \"weekRange\": \"Month D-D, YYYY\"\n}\n```"},"next":"litmus-content","inputs":{"plan":"plan-release","context":"context-builder"}},{"id":"litmus-content","type":"agent-task","label":"Validate Release Content","config":{"template":"# Docs-Site Release Content Litmus Test\n\n**CONFIGURED_VALUE**: You are an automated evaluation system. You MUST output ONLY valid JSON. Do NOT ask questions. This is a non-interactive automated workflow.\n\nYou are evaluating the quality of a release notes MDX file for the self-hosted-swarm docs site.\n\n## Step 1: Read Content\n\nRead the release post:\n```\nagent-fs cat {{content.taskOutput.contentPath}}\n```\n\nRead the slim commit context for accuracy:\n```\nagent-fs cat {{context.taskOutput.contextSlimPath}}\n```\n\n**Hard guard:** Do NOT read `{{context.taskOutput.contextPath}}`. It is the full audit context and may contain large diff/stat output that can blow the model context window on high-commit weeks. The slim context has commit messages and changed file paths needed for factual checks.\n\n## Evaluation Criteria (scored 1-10)\n\n### 1. Technical Accuracy (minimum 7)\n- Do all claims match actual commits?\n- No invented features or exaggerated improvements?\n- Statistics are verifiable?\n\n### 2. Audience Fit (minimum 7)\n- Written for CTOs, solopreneurs, ICs, AI agents?\n- Practical value emphasized?\n- Outcomes over implementation details?\n\n### 3. Completeness (minimum 6)\n- All significant changes covered?\n- Highlights section captures the hero change?\n- Appropriate level of detail?\n\n### 4. MDX Validity (minimum 7)\n- Valid frontmatter with title and description?\n- Proper markdown headings (## Highlights, ## Improvements, ## Bug Fixes)?\n- No invalid JSX/HTML that would break Fumadocs?\n- Code blocks properly formatted?\n\n### 5. Writing Quality (minimum 6)\n- Direct, technical, Linear/Vercel style voice?\n- Clear and scannable structure?\n- Good flow between sections?\n\n### 6. Business Value Communication (minimum 6)\n- Changes framed as outcomes?\n- Clear \"so what\" for each item?\n- Would a busy CTO find this useful?\n\n## Decision: APPROVE if all >= minimum AND total >= 42/60. REJECT otherwise.\n\n## Step 2: Write Results\n\n```\nagent-fs write docs-site-release-runs/{DATE}/content-litmus.json --content '{...}' -m 'Content litmus result'\n```\n\n## Step 3: Return Output\n\nReturn exactly one JSON object matching this schema:\n```json\n{\n  \"approved\": true|false,\n  \"technical_accuracy_score\": <number>,\n  \"audience_fit_score\": <number>,\n  \"completeness_score\": <number>,\n  \"mdx_validity_score\": <number>,\n  \"writing_quality_score\": <number>,\n  \"business_value_score\": <number>,\n  \"total_score\": <number>,\n  \"litmusPath\": \"docs-site-release-runs/YYYY-MM-DD/content-litmus.json\",\n  \"rejection_reasons\": [],\n  \"suggestions\": []\n}\n```\n\n## Final Action Requirement\n\nThis workflow node has an `outputSchema`. Your FINAL action MUST be a `store-progress` call with `status: \"completed\"` and `output` set to a stringified JSON object matching the schema above. Do not finish with prose, a shell command, or an unstored JSON blob.\n\nExample final completion shape:\n```json\n{\"approved\":true,\"technical_accuracy_score\":8,\"audience_fit_score\":8,\"completeness_score\":8,\"mdx_validity_score\":9,\"writing_quality_score\":8,\"business_value_score\":8,\"total_score\":49,\"litmusPath\":\"docs-site-release-runs/YYYY-MM-DD/content-litmus.json\",\"rejection_reasons\":[],\"suggestions\":[]}\n```\n\nBefore completing, apply the `/workflow-structured-output` checklist: include every required key exactly, stringify the JSON for `output`, and make the `store-progress` call the terminal action.","outputSchema":{"type":"object","properties":{"approved":{"type":"boolean"},"technical_accuracy_score":{"type":"number"},"audience_fit_score":{"type":"number"},"completeness_score":{"type":"number"},"mdx_validity_score":{"type":"number"},"writing_quality_score":{"type":"number"},"business_value_score":{"type":"number"},"total_score":{"type":"number"},"litmusPath":{"type":"string"},"rejection_reasons":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}},"required":["approved","total_score","litmusPath"]},"tags":["releases","docs-site","litmus","validation"],"priority":80},"next":"assemble-pr","validation":{"executor":"property-match","config":{"match":{"taskOutput.approved":true}},"mustPass":true,"retry":{"maxRetries":1,"strategy":"static","baseDelayMs":5000,"maxDelayMs":60000}},"inputs":{"content":"write-release","context":"context-builder"}},{"id":"assemble-pr","type":"agent-task","label":"Assemble MDX & Create PR","config":{"template":"# Assemble Docs-Site Release Notes and Create PR\n\nYou are assembling the approved release notes MDX file into the self-hosted-swarm repository's docs-site directory and creating a PR.\n\n## Step 1: Read Inputs\n\nRead the approved content:\n```\nagent-fs cat {{content.taskOutput.contentPath}}\n```\n\nThe date is: `{{content.taskOutput.date}}`\nThe title is: `{{content.taskOutput.title}}`\n\n## Step 2: Setup Repository\n\n```bash\ncd /workspace/repository || git clone '{{REPO_URL}}' /workspace/repository\ncd /workspace/repository && git checkout main && git pull\n```\n\n## Step 3: Write the MDX File\n\n1. Create the releases directory if it doesn't exist:\n   ```bash\n   mkdir -p /workspace/repository/docs-site/content/docs/\\(documentation\\)/releases/\n   ```\n2. Write the MDX content to:\n   `docs-site/content/docs/(documentation)/releases/{{content.taskOutput.date}}.mdx`\n3. Ensure the file has valid frontmatter and MDX content\n\n## Step 4: Update meta.json (if applicable)\n\nCheck if `scripts/generate-releases-meta.ts` exists:\n```bash\nls /workspace/repository/scripts/generate-releases-meta.ts 2>/dev/null\n```\n\nIf it exists, run it:\n```bash\ncd /workspace/repository && npx tsx scripts/generate-releases-meta.ts\n```\n\nIf it doesn't exist, check if there's a `meta.json` in the releases directory and update it manually to include the new release entry (newest first).\n\n## Step 5: Create PR\n\n```bash\ncd /workspace/repository\ngit checkout -b docs/release-notes-{{content.taskOutput.date}}\ngit add docs-site/content/docs/\\(documentation\\)/releases/\ngit commit -m \"docs: add release notes for week of {{content.taskOutput.date}}\"\ngit push origin docs/release-notes-{{content.taskOutput.date}}\ngh pr create --title \"docs: {{content.taskOutput.title}}\" --body \"Weekly release notes for the docs site. Auto-generated by the docs-site-releases workflow.\"\n```\n\n## Step 6: Record Release\n\nWrite the release record to agent-fs:\n```\nagent-fs write docs-site-release-runs/{DATE}/record.json --content '{\"date\": \"...\", \"pr_url\": \"...\", \"status\": \"created\"}' -m 'Docs-site release record'\n```\n\n## Step 7: Return Output\n\n```json\n{\n  \"date\": \"YYYY-MM-DD\",\n  \"prUrl\": \"{{REPO_URL}}/pull/NNN\",\n  \"title\": \"Full title\",\n  \"recordPath\": \"docs-site-release-runs/YYYY-MM-DD/record.json\"\n}\n```","tags":["releases","docs-site","assembly","deterministic"],"priority":80,"outputSchema":{"type":"object","properties":{"date":{"type":"string"},"prUrl":{"type":"string"},"title":{"type":"string"},"recordPath":{"type":"string"}},"required":["date","prUrl","title"]}},"inputs":{"content":"write-release","context":"context-builder"}},{"id":"litmus-dedup-cooldown","type":"property-match","label":"litmus:dedup-cooldown — Continue Only When No Docs Release Exists","config":{"conditions":[{"field":"context.taskOutput.skip","op":"eq","value":false}],"mode":"all"},"next":{"true":"evaluate-commits"},"inputs":{"context":"context-builder"}}],"onNodeFailure":"fail"}