diff --git a/.github/workflows/archivx-agentic-workflows-analyzer.lock.yml b/.github/workflows/archivx-agentic-workflows-analyzer.lock.yml index c2a308f0ed2..8a20d1dc59d 100644 --- a/.github/workflows/archivx-agentic-workflows-analyzer.lock.yml +++ b/.github/workflows/archivx-agentic-workflows-analyzer.lock.yml @@ -249,7 +249,7 @@ jobs: await main(); - name: Upgrade gh CLI for frontmatter skills run: bash "${RUNNER_TEMP}/gh-aw/actions/ensure_gh_cli_min_version.sh" "2.90.0" - - name: Install frontmatter skill 1 + - name: "Install frontmatter skill: SylphAI-Inc/skills/skills/glowmotion" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "claude" diff --git a/.github/workflows/daily-model-inventory.lock.yml b/.github/workflows/daily-model-inventory.lock.yml index bd13509b20e..8f61f5ddef4 100644 --- a/.github/workflows/daily-model-inventory.lock.yml +++ b/.github/workflows/daily-model-inventory.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"f906568fd1c20a339cba001779af6fa7ee6871641ee4cf58a7d2e7d938993a74","body_hash":"1021d8e5f0f5f45cff34282cb573c3f40cf95f80095d978746133ca19d7fd36e","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.80","copilot-sdk":"1.0.11"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"b04fe59cd37aaa687df141b009e47b8c1a492ab1f91ff80febbe2bfbdbc937d6","body_hash":"1021d8e5f0f5f45cff34282cb573c3f40cf95f80095d978746133ca19d7fd36e","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.80","copilot-sdk":"1.0.11"}} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GEMINI_API_KEY","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","OPENAI_API_KEY"],"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-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.3","digest":"sha256:63245de80cc82210c36b469a0ff6ef89fe0b621a8609c7ae6960ac544cf75505","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.3@sha256:63245de80cc82210c36b469a0ff6ef89fe0b621a8609c7ae6960ac544cf75505"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.3","digest":"sha256:9c068361b93bd9349b83758b1073c17fef25ac0bad00c24fedcb96f6cb4b6a90","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.3@sha256:9c068361b93bd9349b83758b1073c17fef25ac0bad00c24fedcb96f6cb4b6a90"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.3","digest":"sha256:7cecff2dc2815aefac37d3030c3cb795bb0f0a434032fab522987fae398effe0","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.3@sha256:7cecff2dc2815aefac37d3030c3cb795bb0f0a434032fab522987fae398effe0"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.10","digest":"sha256:08bb5fa417aed94b40a14e2b7b3ae457531a5f22b143a32fe58317139d9b8f42","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.10@sha256:08bb5fa417aed94b40a14e2b7b3ae457531a5f22b143a32fe58317139d9b8f42"},{"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.9.0","digest":"sha256:881b53d6f75f69bdbc1b5b10fc2f1361717c19054143b3a8529fb5c32061a50e","pinned_image":"ghcr.io/github/github-mcp-server:v1.9.0@sha256:881b53d6f75f69bdbc1b5b10fc2f1361717c19054143b3a8529fb5c32061a50e"}]} # 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 # @@ -1195,7 +1195,7 @@ jobs: GH_HOST="${GITHUB_SERVER_URL#https://}" GH_HOST="${GH_HOST#http://}" echo "GH_HOST=${GH_HOST}" >> "$GITHUB_ENV" - - name: Create placeholder for Copilot billing models + - name: Create placeholder for GitHub Copilot billing models id: fetch run: | set -euo pipefail @@ -1215,7 +1215,7 @@ jobs: if: always() run: cat /tmp/gh-aw/agent/model-inventory/copilot-billing/models.json 2>/dev/null || echo "(no models.json)" shell: bash - - name: Upload Copilot billing models artifact + - name: Upload GitHub Copilot billing models artifact if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: diff --git a/.github/workflows/daily-model-inventory.md b/.github/workflows/daily-model-inventory.md index a209d124241..015e633661b 100644 --- a/.github/workflows/daily-model-inventory.md +++ b/.github/workflows/daily-model-inventory.md @@ -228,7 +228,7 @@ jobs: permissions: contents: read steps: - - name: Create placeholder for Copilot billing models + - name: Create placeholder for GitHub Copilot billing models id: fetch shell: bash run: | @@ -250,7 +250,7 @@ jobs: shell: bash run: cat /tmp/gh-aw/agent/model-inventory/copilot-billing/models.json 2>/dev/null || echo "(no models.json)" - - name: Upload Copilot billing models artifact + - name: Upload GitHub Copilot billing models artifact if: always() uses: actions/upload-artifact@v7.0.1 with: diff --git a/.github/workflows/mattpocock-skills-reviewer.lock.yml b/.github/workflows/mattpocock-skills-reviewer.lock.yml index 9618f13a796..092df48782c 100644 --- a/.github/workflows/mattpocock-skills-reviewer.lock.yml +++ b/.github/workflows/mattpocock-skills-reviewer.lock.yml @@ -327,7 +327,7 @@ jobs: await main(); - name: Upgrade gh CLI for frontmatter skills run: bash "${RUNNER_TEMP}/gh-aw/actions/ensure_gh_cli_min_version.sh" "2.90.0" - - name: Install frontmatter skill 1 + - name: "Install frontmatter skill: mattpocock/skills/diagnosing-bugs" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" @@ -343,7 +343,7 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require(path.join(actionsDir, 'install_frontmatter_skills.cjs')); await main(); - - name: Install frontmatter skill 2 + - name: "Install frontmatter skill: mattpocock/skills/tdd" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" @@ -359,7 +359,7 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require(path.join(actionsDir, 'install_frontmatter_skills.cjs')); await main(); - - name: Install frontmatter skill 3 + - name: "Install frontmatter skill: mattpocock/skills/improve-codebase-architecture" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" @@ -375,7 +375,7 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require(path.join(actionsDir, 'install_frontmatter_skills.cjs')); await main(); - - name: Install frontmatter skill 4 + - name: "Install frontmatter skill: mattpocock/skills/grill-with-docs" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" @@ -391,7 +391,7 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require(path.join(actionsDir, 'install_frontmatter_skills.cjs')); await main(); - - name: Install frontmatter skill 5 + - name: "Install frontmatter skill: mattpocock/skills/codebase-design" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" diff --git a/.github/workflows/ponytail-reviewer.lock.yml b/.github/workflows/ponytail-reviewer.lock.yml index 5a586c98e0d..36488719f4d 100644 --- a/.github/workflows/ponytail-reviewer.lock.yml +++ b/.github/workflows/ponytail-reviewer.lock.yml @@ -323,7 +323,7 @@ jobs: await main(); - name: Upgrade gh CLI for frontmatter skills run: bash "${RUNNER_TEMP}/gh-aw/actions/ensure_gh_cli_min_version.sh" "2.90.0" - - name: Install frontmatter skill 1 + - name: "Install frontmatter skill: DietrichGebert/ponytail/skills/ponytail-review" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_AW_INFO_ENGINE_ID: "copilot" diff --git a/pkg/workflow/activation_skills_step_test.go b/pkg/workflow/activation_skills_step_test.go index c265080a956..7242e11a80b 100644 --- a/pkg/workflow/activation_skills_step_test.go +++ b/pkg/workflow/activation_skills_step_test.go @@ -36,8 +36,8 @@ func TestBuildActivationJob_AddsFrontmatterSkillsInstallSteps(t *testing.T) { steps := strings.Join(job.Steps, "") assert.Contains(t, steps, "Upgrade gh CLI for frontmatter skills", "expected gh upgrade step in activation job") assert.Contains(t, steps, "ensure_gh_cli_min_version.sh", "expected gh upgrade step to delegate to ensure_gh_cli_min_version.sh") - assert.Contains(t, steps, "Install frontmatter skill 1", "expected first frontmatter skill install step in activation job") - assert.Contains(t, steps, "Install frontmatter skill 2", "expected second frontmatter skill install step in activation job") + assert.Contains(t, steps, "Install frontmatter skill: githubnext/skills", "expected first frontmatter skill install step in activation job") + assert.Contains(t, steps, "Install frontmatter skill: githubnext/skills/review/security", "expected second frontmatter skill install step in activation job") assert.Contains(t, steps, "GH_AW_INFO_ENGINE_ID: \"claude\"", "expected engine id env var for gh skill agent mapping") assert.Contains(t, steps, "GH_AW_GH_SKILL_AGENT_NAME: \"claude-code\"", "expected gh skill agent env var for claude") assert.Contains(t, steps, "GH_AW_SKILL_DIR: \".claude/skills\"", "expected engine skill directory env var") diff --git a/pkg/workflow/compiler_activation_steps.go b/pkg/workflow/compiler_activation_steps.go index a6f9c463067..0d767615ce0 100644 --- a/pkg/workflow/compiler_activation_steps.go +++ b/pkg/workflow/compiler_activation_steps.go @@ -197,6 +197,22 @@ func (c *Compiler) addActivationVersionCheckStep(ctx *activationJobBuildContext) ctx.steps = append(ctx.steps, generateGitHubScriptWithRequire("check_version_updates.cjs")) } +// frontmatterSkillStepName builds a human-readable step name for installing a +// frontmatter skill, including the skill identifier (with any trailing +// "@" pin stripped) so a reader doesn't have to cross-reference the +// workflow's skills: frontmatter list to map index -> skill. Falls back to the +// numbered form when the skill identifier is empty. +func frontmatterSkillStepName(skill string, stepNumber int) string { + identifier := strings.TrimSpace(skill) + if identifier == "" { + return fmt.Sprintf("Install frontmatter skill %d", stepNumber) + } + if at := strings.LastIndex(identifier, "@"); at > 0 { + identifier = identifier[:at] + } + return fmt.Sprintf("%q", "Install frontmatter skill: "+identifier) +} + func (c *Compiler) addActivationSkillInstallSteps(ctx *activationJobBuildContext) { skillRefs := append([]SkillReference(nil), ctx.data.SkillReferences...) if len(skillRefs) == 0 && len(ctx.data.Skills) > 0 { @@ -245,7 +261,7 @@ func (c *Compiler) addActivationSkillInstallSteps(ctx *activationJobBuildContext tokenExpr = stepTokenExpr } } - ctx.steps = append(ctx.steps, fmt.Sprintf(" - name: Install frontmatter skill %d\n", i+1)) + ctx.steps = append(ctx.steps, fmt.Sprintf(" - name: %s\n", frontmatterSkillStepName(skillRef.Skill, i+1))) ctx.steps = append(ctx.steps, " env:\n") ctx.steps = append(ctx.steps, fmt.Sprintf(" GH_TOKEN: %s\n", tokenExpr)) ctx.steps = append(ctx.steps, formatYAMLEnv(" ", "GH_AW_INFO_ENGINE_ID", engineID)) diff --git a/pkg/workflow/compiler_activation_steps_test.go b/pkg/workflow/compiler_activation_steps_test.go index 60be1612769..dde3d0b1590 100644 --- a/pkg/workflow/compiler_activation_steps_test.go +++ b/pkg/workflow/compiler_activation_steps_test.go @@ -285,7 +285,7 @@ func TestActivationStepsAddSkillInstallSteps(t *testing.T) { steps := strings.Join(ctx.steps, "") assert.Contains(t, steps, "Upgrade gh CLI for frontmatter skills") - assert.Contains(t, steps, "Install frontmatter skill 1") + assert.Contains(t, steps, "Install frontmatter skill: githubnext/skills") assert.Contains(t, steps, "GH_AW_INFO_ENGINE_ID: \"claude\"") assert.Contains(t, steps, "GH_AW_GH_SKILL_AGENT_NAME: \"claude-code\"") assert.Contains(t, steps, "GH_AW_FRONTMATTER_SKILLS: \"githubnext/skills@deadbeef\"")