diff --git a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml index af8947a58ec..1ab66c54ad1 100644 --- a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml +++ b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"698d31709d8149a3329d94dd5843903edf563160af401697e49b4dc175df997d","body_hash":"90ac679daa04d7b6fd717a7ae6b4242d6c4eceb4bbf1de36036671ff4f7a741d","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.78","copilot-sdk":"1.0.8"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"698d31709d8149a3329d94dd5843903edf563160af401697e49b4dc175df997d","body_hash":"483aa6956be37c88ae5731cdfcc3efd8c8b16ca2e4f2a6ec97afce17b6ef19b7","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.78","copilot-sdk":"1.0.8"}} # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GH_AW_OTEL_GRAFANA_AUTHORIZATION","GH_AW_OTEL_GRAFANA_ENDPOINT","GH_AW_OTEL_SENTRY_AUTHORIZATION","GH_AW_OTEL_SENTRY_ENDPOINT","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache/restore","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/cache/save","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-go","sha":"b7ad1dad31e06c5925ef5d2fc7ad053ef454303e","version":"v7.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"docker/build-push-action","sha":"53b7df96c91f9c12dcc8a07bcb9ccacbed38856a","version":"v7.3.0"},{"repo":"docker/setup-buildx-action","sha":"bb05f3f5519dd87d3ba754cc423b652a5edd6d2c","version":"v4.2.0"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.44","digest":"sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.44@sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44","digest":"sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44@sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.44","digest":"sha256:c064d15974f7c933ec7d3f7b4038f4fd203547b3154bdc821afd379144887eff","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.44@sha256:c064d15974f7c933ec7d3f7b4038f4fd203547b3154bdc821afd379144887eff"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.44","digest":"sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.44@sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.8","digest":"sha256:38bbea36cdb46a3c9d04d1db05e672966f5239b431a2022eb35881688e5721d8","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.8@sha256:38bbea36cdb46a3c9d04d1db05e672966f5239b431a2022eb35881688e5721d8"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196","pinned_image":"ghcr.io/github/gh-aw-node@sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196"},{"image":"ghcr.io/github/github-mcp-server:v1.8.0","digest":"sha256:d5a18c04b92714c309eb46a2305087e91a4dbd80420f6e462656699f95093520","pinned_image":"ghcr.io/github/github-mcp-server:v1.8.0@sha256:d5a18c04b92714c309eb46a2305087e91a4dbd80420f6e462656699f95093520"}]} # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # diff --git a/.github/workflows/daily-agent-of-the-day-blog-writer.md b/.github/workflows/daily-agent-of-the-day-blog-writer.md index 2f4b5baabdc..9b189c769e6 100644 --- a/.github/workflows/daily-agent-of-the-day-blog-writer.md +++ b/.github/workflows/daily-agent-of-the-day-blog-writer.md @@ -96,10 +96,8 @@ You write one short blog entry per weekday for the `gh-aw` docs blog spotlightin - Keep writing vivid and varied — avoid repetitive or robotic voice. - Keep the post to a **maximum 5-minute read** (target 450–900 words). - Stay corporate appropriate and compliant with Microsoft/GitHub policies. -- Use sub-agents: - - one to generate a blogger persona, - - one to write the story in GitHub blog style using that persona, - - one to optimize SEO metadata (`seoDescription`, `linkedPostText`). +- Generate blogger persona, story draft, and SEO metadata in this same agent session. +- Do not call sub-agent/task tools for this workflow. - Use `agentic-workflows` `logs` and `audit` results as live evidence and include links to referenced issues/PRs. - If a chart image is available, include it in the post. - The `create_pull_request` patch must contain only text changes under `docs/src/content/docs/**`; never include binary assets in the PR patch — use `upload-asset` for those. @@ -138,19 +136,19 @@ If no remote image URL is available but `docs/public/blog-combined.png` exists, Do not stage the PNG with `git add` and do not include any binary files in the PR. -### 4) Generate persona and draft content through sub-agents +### 4) Generate persona and draft content -1. Call `persona-generator` to produce a fresh blogger persona. -2. Call `story-writer` with: - - persona output, +1. Create a fresh blogger persona. +2. Write the story in GitHub blog style using: + - persona, - chosen workflow, - extracted run evidence, - issue/PR links, - optional chart URL. -3. Call `seo-optimizer` to generate: +3. Generate: - `seoDescription` (max 160 chars, SERP-friendly), - `linkedPostText` (short, clickable link text for post cards/social snippets). - - If `seoDescription` is over 160 characters, rewrite it before continuing. +4. If `seoDescription` is over 160 characters, rewrite it before continuing. ### 5) Create blog post file @@ -212,54 +210,3 @@ Never end with plain text only and no safe-output call. - No policy-unsafe or non-corporate language. - Keep it concise, energetic, and developer-friendly. - Vary rhythm and phrasing between runs. - -#### agent: `persona-generator` ---- -description: Generates a rotating, policy-safe blogger persona for daily workflow storytelling -model: mai-code ---- -Produce a short persona profile for a GitHub blog voice. - -Output format: -- Name: -- Tone: -- Signature style traits (3 bullets): -- Avoid list (2 bullets to avoid robotic/repetitive writing): - -Constraints: -- Corporate appropriate. -- Professional and friendly. -- Distinct from generic AI assistant voice. -- Do not include slang that could violate workplace norms. - -#### agent: `story-writer` ---- -description: Writes a lively, evidence-grounded Agent of the Day story in GitHub blog style -model: large ---- -Write a concise blog post body in GitHub blog style using the provided persona and evidence. - -Requirements: -- 450–900 words max. -- Vary sentence length and paragraph rhythm. -- Use concrete details from provided logs/audit evidence only. -- Include issue/PR links naturally in the narrative. -- Stay policy-safe and corporate appropriate. -- Keep it useful and readable for developers. - -Return only markdown body content (no frontmatter). - -#### agent: `seo-optimizer` ---- -description: Produces SEO metadata for Astro blog cards and link previews -model: mai-code ---- -Generate: -1) `seoDescription`: <= 160 characters, search-optimized, accurate. -2) `linkedPostText`: <= 80 characters, compelling but professional. - -Rules: -- Must align with the real post content. -- No hypey clickbait, no unverifiable claims. -- Maintain GitHub/Microsoft corporate tone. -- Hard limit: never return `seoDescription` longer than 160 characters.