From 528bb053f4e4fb758fc2a1a41c4b111de54302f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:09:14 +0000 Subject: [PATCH 1/6] Initial plan From 8a978773c0f7ccf6d2fed6cc5dc461e999db7e2d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:24:47 +0000 Subject: [PATCH 2/6] fix: move views configuration to create-project for campaign generator Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com> --- .../agentic-campaign-generator.lock.yml | 2 +- .../workflows/agentic-campaign-generator.md | 6 +- specs/artifacts.md | 72 ++++++++++++++++--- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/.github/workflows/agentic-campaign-generator.lock.yml b/.github/workflows/agentic-campaign-generator.lock.yml index 5427736ed6..53dd053421 100644 --- a/.github/workflows/agentic-campaign-generator.lock.yml +++ b/.github/workflows/agentic-campaign-generator.lock.yml @@ -1414,7 +1414,7 @@ jobs: uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 env: GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} - GH_AW_SAFE_OUTPUTS_PROJECT_HANDLER_CONFIG: "{\"create_project\":{\"github-token\":\"${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}\",\"max\":1,\"target_owner\":\"${{ github.repository_owner }}\"},\"update_project\":{\"github-token\":\"${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}\",\"max\":10,\"views\":[{\"name\":\"Campaign Roadmap\",\"layout\":\"roadmap\",\"filter\":\"is:issue is:pr\"},{\"name\":\"Task Tracker\",\"layout\":\"table\",\"filter\":\"is:issue is:pr\"},{\"name\":\"Progress Board\",\"layout\":\"board\",\"filter\":\"is:issue is:pr\"}]}}" + GH_AW_SAFE_OUTPUTS_PROJECT_HANDLER_CONFIG: "{\"create_project\":{\"github-token\":\"${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}\",\"max\":1,\"target_owner\":\"${{ github.repository_owner }}\",\"views\":[{\"name\":\"Campaign Roadmap\",\"layout\":\"roadmap\",\"filter\":\"is:issue is:pr\"},{\"name\":\"Task Tracker\",\"layout\":\"table\",\"filter\":\"is:issue is:pr\"},{\"name\":\"Progress Board\",\"layout\":\"board\",\"filter\":\"is:issue is:pr\"}]},\"update_project\":{\"github-token\":\"${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}\",\"max\":10}}" GH_AW_PROJECT_GITHUB_TOKEN: ${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }} with: github-token: ${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }} diff --git a/.github/workflows/agentic-campaign-generator.md b/.github/workflows/agentic-campaign-generator.md index d3c2c5ad8a..f8cb6b73d2 100644 --- a/.github/workflows/agentic-campaign-generator.md +++ b/.github/workflows/agentic-campaign-generator.md @@ -25,9 +25,6 @@ safe-outputs: max: 1 github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" target-owner: "${{ github.repository_owner }}" - update-project: - max: 10 - github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" views: - name: "Campaign Roadmap" layout: "roadmap" @@ -38,6 +35,9 @@ safe-outputs: - name: "Progress Board" layout: "board" filter: "is:issue is:pr" + update-project: + max: 10 + github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" messages: footer: "> *Campaign coordination by [{workflow_name}]({run_url})*" run-started: "Campaign Generator starting! [{workflow_name}]({run_url}) is processing your campaign request for this {event_type}..." diff --git a/specs/artifacts.md b/specs/artifacts.md index 2371f70cd9..02a41bfbf3 100644 --- a/specs/artifacts.md +++ b/specs/artifacts.md @@ -24,10 +24,10 @@ This section provides an overview of artifacts organized by job name, with dupli - `agent-artifacts` - **Paths**: `/tmp/gh-aw/agent-stdio.log`, `/tmp/gh-aw/aw-prompts/prompt.txt`, `/tmp/gh-aw/aw.patch`, `/tmp/gh-aw/aw_info.json`, `/tmp/gh-aw/mcp-logs/`, `/tmp/gh-aw/safe-inputs/logs/`, `/tmp/gh-aw/sandbox/firewall/logs/` - - **Used in**: 69 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, codex-github-remote-mcp-test.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, example-custom-error-patterns.md, example-permissions-warning.md, firewall.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, metrics-collector.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 70 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, codex-github-remote-mcp-test.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, example-custom-error-patterns.md, example-permissions-warning.md, firewall.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, metrics-collector.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md - `agent-output` - **Paths**: `${{ env.GH_AW_AGENT_OUTPUT }}` - - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 65 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md - `agent_outputs` - **Paths**: `/tmp/gh-aw/mcp-config/logs/`, `/tmp/gh-aw/redacted-urls.log`, `/tmp/gh-aw/sandbox/agent/logs/` - **Used in**: 60 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, code-scanning-fixer.md, codex-github-remote-mcp-test.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, example-custom-error-patterns.md, example-permissions-warning.md, firewall.md, glossary-maintainer.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, metrics-collector.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md @@ -51,7 +51,7 @@ This section provides an overview of artifacts organized by job name, with dupli - **Used in**: 8 workflow(s) - agent-performance-analyzer.md, copilot-pr-nlp-analysis.md, daily-copilot-token-report.md, daily-news.md, deep-report.md, metrics-collector.md, security-compliance.md, workflow-health-manager.md - `safe-output` - **Paths**: `${{ env.GH_AW_SAFE_OUTPUTS }}` - - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 65 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md - `safe-outputs-assets` - **Paths**: `/tmp/gh-aw/safeoutputs/assets/` - **Used in**: 12 workflow(s) - copilot-pr-nlp-analysis.md, daily-copilot-token-report.md, daily-issues-report.md, daily-news.md, daily-repo-chronicle.md, deep-report.md, github-mcp-structural-analysis.md, poem-bot.md, python-data-charts.md, stale-repo-identifier.md, technical-doc-writer.md, weekly-issue-summary.md @@ -74,7 +74,7 @@ This section provides an overview of artifacts organized by job name, with dupli - `agent-output` - **Download paths**: `/tmp/gh-aw/safeoutputs/` - - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 65 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md ### Job: `detection` @@ -82,16 +82,16 @@ This section provides an overview of artifacts organized by job name, with dupli - `threat-detection.log` - **Paths**: `/tmp/gh-aw/threat-detection/detection.log` - - **Used in**: 63 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md **Artifacts Downloaded:** - `agent-artifacts` - **Download paths**: `/tmp/gh-aw/threat-detection/` - - **Used in**: 63 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md - `agent-output` - **Download paths**: `/tmp/gh-aw/threat-detection/` - - **Used in**: 63 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md ### Job: `notion_add_comment` @@ -126,7 +126,7 @@ This section provides an overview of artifacts organized by job name, with dupli - **Used in**: 15 workflow(s) - changeset.md, ci-coach.md, cloclo.md, code-scanning-fixer.md, craft.md, dictation-prompt.md, glossary-maintainer.md, hourly-ci-cleaner.md, layout-spec-maintainer.md, mergefest.md, poem-bot.md, q.md, slide-deck-maintainer.md, technical-doc-writer.md, tidy.md - `agent-output` - **Download paths**: `/tmp/gh-aw/safeoutputs/` - - **Used in**: 64 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md + - **Used in**: 65 workflow(s) - agent-performance-analyzer.md, agent-persona-explorer.md, agentic-campaign-generator.md, ai-moderator.md, archie.md, brave.md, breaking-change-checker.md, changeset.md, ci-coach.md, ci-doctor.md, cli-consistency-checker.md, cloclo.md, code-scanning-fixer.md, commit-changes-analyzer.md, copilot-pr-merged-report.md, copilot-pr-nlp-analysis.md, craft.md, daily-choice-test.md, daily-copilot-token-report.md, daily-fact.md, daily-file-diet.md, daily-issues-report.md, daily-news.md, daily-observability-report.md, daily-repo-chronicle.md, daily-team-status.md, deep-report.md, dependabot-go-checker.md, dev-hawk.md, dev.md, dictation-prompt.md, github-mcp-structural-analysis.md, glossary-maintainer.md, go-fan.md, go-pattern-detector.md, grumpy-reviewer.md, hourly-ci-cleaner.md, issue-classifier.md, issue-triage-agent.md, layout-spec-maintainer.md, mergefest.md, notion-issue-summary.md, pdf-summary.md, plan.md, poem-bot.md, pr-nitpick-reviewer.md, python-data-charts.md, q.md, release.md, repo-audit-analyzer.md, repository-quality-improver.md, research.md, scout.md, security-compliance.md, security-review.md, slide-deck-maintainer.md, stale-repo-identifier.md, super-linter.md, technical-doc-writer.md, tidy.md, typist.md, video-analyzer.md, weekly-issue-summary.md, workflow-generator.md, workflow-health-manager.md ### Job: `super_linter` @@ -317,6 +317,62 @@ This section provides an overview of artifacts organized by job name, with dupli - **Download path**: `/tmp/gh-aw/cache-memory` - **Depends on jobs**: [agent detection] +### agentic-campaign-generator.md + +#### Job: `agent` + +**Uploads:** + +- **Artifact**: `safe-output` + - **Upload paths**: + - `${{ env.GH_AW_SAFE_OUTPUTS }}` + +- **Artifact**: `agent-output` + - **Upload paths**: + - `${{ env.GH_AW_AGENT_OUTPUT }}` + +- **Artifact**: `agent-artifacts` + - **Upload paths**: + - `/tmp/gh-aw/aw-prompts/prompt.txt` + - `/tmp/gh-aw/aw_info.json` + - `/tmp/gh-aw/mcp-logs/` + - `/tmp/gh-aw/sandbox/firewall/logs/` + - `/tmp/gh-aw/agent-stdio.log` + +#### Job: `conclusion` + +**Downloads:** + +- **Artifact**: `agent-output` (by name) + - **Download path**: `/tmp/gh-aw/safeoutputs/` + - **Depends on jobs**: [activation agent detection safe_outputs] + +#### Job: `detection` + +**Uploads:** + +- **Artifact**: `threat-detection.log` + - **Upload paths**: + - `/tmp/gh-aw/threat-detection/detection.log` + +**Downloads:** + +- **Artifact**: `agent-artifacts` (by name) + - **Download path**: `/tmp/gh-aw/threat-detection/` + - **Depends on jobs**: [agent] + +- **Artifact**: `agent-output` (by name) + - **Download path**: `/tmp/gh-aw/threat-detection/` + - **Depends on jobs**: [agent] + +#### Job: `safe_outputs` + +**Downloads:** + +- **Artifact**: `agent-output` (by name) + - **Download path**: `/tmp/gh-aw/safeoutputs/` + - **Depends on jobs**: [activation agent detection] + ### ai-moderator.md #### Job: `agent` From 3fcc0602fdd1d47b475ec924cba5234262a66c94 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:38:52 +0000 Subject: [PATCH 3/6] docs: add example safe-outputs config with views under create-project Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com> --- .github/aw/generate-agentic-campaign.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/aw/generate-agentic-campaign.md b/.github/aw/generate-agentic-campaign.md index 60617d2fdc..6a69e69381 100644 --- a/.github/aw/generate-agentic-campaign.md +++ b/.github/aw/generate-agentic-campaign.md @@ -81,6 +81,30 @@ allowed-safe-outputs: [create-issue, add-comment] 3. `update-issue` (updates metadata, optional) 4. `assign-to-agent` (assigns agents, optional) +**Example Safe Outputs Configuration for Project-Based Campaigns:** +```yaml +safe-outputs: + create-project: + max: 1 + github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" + target-owner: "${{ github.repository_owner }}" + views: # Views are created automatically when project is created + - name: "Campaign Roadmap" + layout: "roadmap" + filter: "is:issue is:pr" + - name: "Task Tracker" + layout: "table" + filter: "is:issue is:pr" + - name: "Progress Board" + layout: "board" + filter: "is:issue is:pr" + update-project: + max: 10 + github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" + update-issue: + assign-to-agent: +``` + **Risk Levels:** - High: Sensitive/multi-repo/breaking → 2 approvals + sponsor - Medium: Cross-repo/automated → 1 approval From 743bb566a9f74f1609dacf9f74c4210f2b58bc0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:51:55 +0000 Subject: [PATCH 4/6] fix: move views from UpdateProjects to CreateProjects in buildGeneratorSafeOutputs Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com> --- pkg/campaign/generator.go | 6 ++--- .../templates/generate-agentic-campaign.md | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pkg/campaign/generator.go b/pkg/campaign/generator.go index 4a3cdc671f..feea3def35 100644 --- a/pkg/campaign/generator.go +++ b/pkg/campaign/generator.go @@ -70,9 +70,6 @@ func buildGeneratorSafeOutputs() *workflow.SafeOutputsConfig { CreateProjects: &workflow.CreateProjectsConfig{ GitHubToken: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}", TargetOwner: "${{ github.repository_owner }}", - }, - UpdateProjects: &workflow.UpdateProjectConfig{ - GitHubToken: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}", Views: []workflow.ProjectView{ { Name: "Campaign Roadmap", @@ -91,6 +88,9 @@ func buildGeneratorSafeOutputs() *workflow.SafeOutputsConfig { }, }, }, + UpdateProjects: &workflow.UpdateProjectConfig{ + GitHubToken: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}", + }, Messages: &workflow.SafeOutputMessagesConfig{ Footer: "> *Campaign coordination by [{workflow_name}]({run_url})*", RunStarted: "Campaign Generator starting! [{workflow_name}]({run_url}) is processing your campaign request for this {event_type}...", diff --git a/pkg/cli/templates/generate-agentic-campaign.md b/pkg/cli/templates/generate-agentic-campaign.md index 60617d2fdc..6a69e69381 100644 --- a/pkg/cli/templates/generate-agentic-campaign.md +++ b/pkg/cli/templates/generate-agentic-campaign.md @@ -81,6 +81,30 @@ allowed-safe-outputs: [create-issue, add-comment] 3. `update-issue` (updates metadata, optional) 4. `assign-to-agent` (assigns agents, optional) +**Example Safe Outputs Configuration for Project-Based Campaigns:** +```yaml +safe-outputs: + create-project: + max: 1 + github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" + target-owner: "${{ github.repository_owner }}" + views: # Views are created automatically when project is created + - name: "Campaign Roadmap" + layout: "roadmap" + filter: "is:issue is:pr" + - name: "Task Tracker" + layout: "table" + filter: "is:issue is:pr" + - name: "Progress Board" + layout: "board" + filter: "is:issue is:pr" + update-project: + max: 10 + github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" + update-issue: + assign-to-agent: +``` + **Risk Levels:** - High: Sensitive/multi-repo/breaking → 2 approvals + sponsor - Medium: Cross-repo/automated → 1 approval From 8cde91677c22eba5f530efd811875adde69d8db7 Mon Sep 17 00:00:00 2001 From: Mara Nikola Kiefer Date: Mon, 19 Jan 2026 22:02:33 +0100 Subject: [PATCH 5/6] rm create-campaign file as interarctive campaign desisgner no longer present --- pkg/cli/commands.go | 3 - pkg/cli/copilot-agents.go | 12 -- pkg/cli/init.go | 1 - pkg/cli/templates/create-agentic-campaign.md | 203 ------------------- 4 files changed, 219 deletions(-) delete mode 100644 pkg/cli/templates/create-agentic-campaign.md diff --git a/pkg/cli/commands.go b/pkg/cli/commands.go index 3d88bbbe79..e8caf867c5 100644 --- a/pkg/cli/commands.go +++ b/pkg/cli/commands.go @@ -42,9 +42,6 @@ var debugWorkflowPromptTemplate string //go:embed templates/upgrade-agentic-workflows.md var upgradeAgenticWorkflowsPromptTemplate string -//go:embed templates/create-agentic-campaign.md -var campaignCreationInstructionsTemplate string - //go:embed templates/generate-agentic-campaign.md var campaignGeneratorInstructionsTemplate string diff --git a/pkg/cli/copilot-agents.go b/pkg/cli/copilot-agents.go index 2e52ea8bcc..6c875d79b3 100644 --- a/pkg/cli/copilot-agents.go +++ b/pkg/cli/copilot-agents.go @@ -271,18 +271,6 @@ func ensureCampaignGeneratorInstructions(verbose bool, skipInstructions bool) er ) } -// ensureCampaignCreationInstructions ensures that .github/aw/create-agentic-campaign.md exists -func ensureCampaignCreationInstructions(verbose bool, skipInstructions bool) error { - return ensureFileMatchesTemplate( - filepath.Join(".github", "aw"), - "create-agentic-campaign.md", - campaignCreationInstructionsTemplate, - "campaign creation instructions", - verbose, - skipInstructions, - ) -} - // deleteSetupAgenticWorkflowsAgent deletes the setup-agentic-workflows.agent.md file if it exists func deleteSetupAgenticWorkflowsAgent(verbose bool) error { gitRoot, err := findGitRoot() diff --git a/pkg/cli/init.go b/pkg/cli/init.go index 0314ef88d5..5be0957719 100644 --- a/pkg/cli/init.go +++ b/pkg/cli/init.go @@ -131,7 +131,6 @@ func InitRepository(verbose bool, mcp bool, campaign bool, tokens bool, engine s fn func(bool, bool) error name string }{ - {ensureCampaignCreationInstructions, "campaign creation instructions"}, {ensureCampaignOrchestratorInstructions, "campaign orchestrator instructions"}, {ensureCampaignProjectUpdateInstructions, "campaign project update instructions"}, {ensureCampaignWorkflowExecution, "campaign workflow execution"}, diff --git a/pkg/cli/templates/create-agentic-campaign.md b/pkg/cli/templates/create-agentic-campaign.md deleted file mode 100644 index e3c67e650f..0000000000 --- a/pkg/cli/templates/create-agentic-campaign.md +++ /dev/null @@ -1,203 +0,0 @@ -# Campaign Creation Instructions - -This file consolidates campaign design logic used across campaign creation workflows. - ---- - -## Campaign ID Generation - -Convert campaign names to kebab-case identifiers: -- Remove special characters, replace spaces with hyphens, lowercase everything -- Add timeline if mentioned (e.g., "security-q1-2025") - -**Examples:** -- "Security Q1 2025" → "security-q1-2025" -- "Node.js 16 to 20 Migration" → "nodejs-16-to-20-migration" - -**Conflict check:** Verify `.github/workflows/.campaign.md` doesn't exist. If it does, append `-v2`. - ---- - -## Workflow Discovery - -When identifying workflows for a campaign: - -1. **Scan for existing workflows:** - ```bash - ls .github/workflows/*.md # Agentic workflows - ls .github/workflows/*.yml | grep -v ".lock.yml" # Regular workflows - ``` - -2. **Check workflow types:** - - **Agentic workflows** (`.md` files): Parse frontmatter for description, triggers, safe-outputs - - **Regular workflows** (`.yml` files): Read name, triggers, jobs - assess AI enhancement potential - - **External workflows**: Check [agentics collection](https://github.com/githubnext/agentics) for reusable workflows - -3. **Match to campaign type:** - - **Security**: Look for workflows with "security", "vulnerability", "scan" keywords - - **Dependencies**: Look for "dependency", "upgrade", "update" keywords - - **Documentation**: Look for "doc", "documentation", "guide" keywords - - **Quality**: Look for "quality", "test", "lint" keywords - - **CI/CD**: Look for "ci", "build", "deploy" keywords - -4. **Workflow patterns:** - - **Scanner**: Identify issues → create-issue, add-comment - - **Fixer**: Create fixes → create-pull-request, add-comment - - **Reporter**: Generate summaries → create-discussion, update-issue - - **Orchestrator**: Manage campaign → auto-generated - -5. **Select 2-4 workflows:** - - Prioritize existing agentic workflows - - Identify 1-2 regular workflows that benefit from AI - - Include relevant workflows from agentics collection - - Create new workflows only if gaps remain - ---- - -## Safe Output Configuration - -Configure safe outputs using **least privilege** - only grant what's needed. - -### Operation Order (Required) - -When setting up project-based campaigns, operations must be performed in this order: - -1. **create-project** - Creates the GitHub project (includes creating views) -2. **update-project** - Adds items and fields to the project -3. **update-issue** - Updates issue metadata (if needed) -4. **assign-to-agent** - Assigns agents to issues (if needed) - -This order ensures fields exist before being referenced and issues exist before assignment. - -### Common Patterns - -**Scanner workflows:** -```yaml -allowed-safe-outputs: - - create-issue - - add-comment -``` - -**Fixer workflows:** -```yaml -allowed-safe-outputs: - - create-pull-request - - add-comment -``` - -**Project-based campaigns:** -```yaml -allowed-safe-outputs: - - create-project # Step 1: Create project with views - - update-project # Step 2: Add items and fields - - update-issue # Step 3: Update issue metadata (optional) - - assign-to-agent # Step 4: Assign agents (optional) -``` - -**Default (safe start):** -```yaml -allowed-safe-outputs: - - create-issue - - add-comment - - create-pull-request -``` - -**Security note:** Only add `update-issue`, `update-pull-request`, or `create-pull-request-review-comment` if specifically required. - ---- - -## Governance - -### Risk Levels - -- **High risk**: Sensitive changes, multiple repos, breaking changes → Requires 2 approvals + executive sponsor -- **Medium risk**: Cross-repo issues/PRs, automated changes → Requires 1 approval -- **Low risk**: Read-only, single repo → No approval needed - -### Ownership - -```yaml -owners: - - @ -executive-sponsors: # Required for high-risk - - @ -approval-policy: # For high/medium risk - required-approvals: <1-2> - required-reviewers: - - -``` - ---- - -## Campaign File Template - -```markdown ---- -id: -name: -description: -project-url: -workflows: - - - - -owners: - - @ -risk-level: -state: planned -allowed-safe-outputs: - - create-issue - - add-comment ---- - -# - - - -## Workflows - -### - - -## Timeline - -- **Start**: -- **Target**: -``` - ---- - -## Compilation - -Compile the campaign to generate orchestrator: - -```bash -gh aw compile -``` - -Generated files: -- `.github/workflows/.campaign.g.md` (orchestrator) -- `.github/workflows/.campaign.lock.yml` (compiled) - ---- - -## Best Practices - -1. **Start simple** - One clear goal per campaign -2. **Reuse workflows** - Check existing before creating new -3. **Minimal permissions** - Grant only what's needed -4. **Escalate when unsure** - Create issues for human review - -### DO: -- ✅ Use unique kebab-case campaign IDs -- ✅ Scan existing workflows before suggesting new -- ✅ Apply least privilege for safe outputs -- ✅ Follow operation order for project-based campaigns - -### DON'T: -- ❌ Create duplicate campaign IDs -- ❌ Skip workflow discovery -- ❌ Grant unnecessary permissions - ---- - -**Last Updated:** 2026-01-15 From 747a20c6a2882a6c0271c159066f133b1dcad2d4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 19 Jan 2026 21:40:03 +0000 Subject: [PATCH 6/6] fix: recompile workflow and update rendering + tests for views in create-project Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com> --- .github/aw/generate-agentic-campaign.md | 32 +-- .../agentic-campaign-generator.lock.yml | 6 +- pkg/cli/init.go | 16 +- pkg/cli/init_test.go | 4 +- pkg/cli/templates/create-agentic-campaign.md | 203 ++++++++++++++++++ .../templates/generate-agentic-campaign.md | 32 +-- 6 files changed, 234 insertions(+), 59 deletions(-) create mode 100644 pkg/cli/templates/create-agentic-campaign.md diff --git a/.github/aw/generate-agentic-campaign.md b/.github/aw/generate-agentic-campaign.md index 6a69e69381..72dc6c5b7c 100644 --- a/.github/aw/generate-agentic-campaign.md +++ b/.github/aw/generate-agentic-campaign.md @@ -82,28 +82,16 @@ allowed-safe-outputs: [create-issue, add-comment] 4. `assign-to-agent` (assigns agents, optional) **Example Safe Outputs Configuration for Project-Based Campaigns:** -```yaml -safe-outputs: - create-project: - max: 1 - github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" - target-owner: "${{ github.repository_owner }}" - views: # Views are created automatically when project is created - - name: "Campaign Roadmap" - layout: "roadmap" - filter: "is:issue is:pr" - - name: "Task Tracker" - layout: "table" - filter: "is:issue is:pr" - - name: "Progress Board" - layout: "board" - filter: "is:issue is:pr" - update-project: - max: 10 - github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" - update-issue: - assign-to-agent: -``` + +When configuring safe outputs, place the `views` array under `create-project` (not `update-project`): +- `create-project.views` - Views are created automatically when project is created +- `create-project.github-token` - Use the GH_AW_PROJECT_GITHUB_TOKEN secret +- `create-project.target-owner` - Use github.repository_owner expression + +The three standard views for campaigns are: +1. Campaign Roadmap (layout: roadmap) +2. Task Tracker (layout: table) +3. Progress Board (layout: board) **Risk Levels:** - High: Sensitive/multi-repo/breaking → 2 approvals + sponsor diff --git a/.github/workflows/agentic-campaign-generator.lock.yml b/.github/workflows/agentic-campaign-generator.lock.yml index 9e1e9310c3..7a84d19e66 100644 --- a/.github/workflows/agentic-campaign-generator.lock.yml +++ b/.github/workflows/agentic-campaign-generator.lock.yml @@ -176,11 +176,7 @@ jobs: node-version: '24' package-manager-cache: false - name: Install awf binary - run: | - echo "Installing awf via installer script (requested version: v0.10.0)" - curl -sSL https://raw.githubusercontent.com/githubnext/gh-aw-firewall/main/install.sh | sudo AWF_VERSION=v0.10.0 bash - which awf - awf --version + run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.10.0 - name: Install Claude Code CLI run: npm install -g --silent @anthropic-ai/claude-code@2.1.12 - name: Determine automatic lockdown mode for GitHub MCP server diff --git a/pkg/cli/init.go b/pkg/cli/init.go index 5be0957719..3a36ac80ca 100644 --- a/pkg/cli/init.go +++ b/pkg/cli/init.go @@ -483,6 +483,14 @@ func renderCampaignGeneratorMarkdown(data *workflow.WorkflowData) string { if data.SafeOutputs.CreateProjects.TargetOwner != "" { fmt.Fprintf(&b, " target-owner: \"%s\"\n", data.SafeOutputs.CreateProjects.TargetOwner) } + if len(data.SafeOutputs.CreateProjects.Views) > 0 { + b.WriteString(" views:\n") + for _, view := range data.SafeOutputs.CreateProjects.Views { + fmt.Fprintf(&b, " - name: \"%s\"\n", view.Name) + fmt.Fprintf(&b, " layout: \"%s\"\n", view.Layout) + fmt.Fprintf(&b, " filter: \"%s\"\n", view.Filter) + } + } } if data.SafeOutputs.UpdateProjects != nil { @@ -491,14 +499,6 @@ func renderCampaignGeneratorMarkdown(data *workflow.WorkflowData) string { if data.SafeOutputs.UpdateProjects.GitHubToken != "" { fmt.Fprintf(&b, " github-token: \"%s\"\n", data.SafeOutputs.UpdateProjects.GitHubToken) } - if len(data.SafeOutputs.UpdateProjects.Views) > 0 { - b.WriteString(" views:\n") - for _, view := range data.SafeOutputs.UpdateProjects.Views { - fmt.Fprintf(&b, " - name: \"%s\"\n", view.Name) - fmt.Fprintf(&b, " layout: \"%s\"\n", view.Layout) - fmt.Fprintf(&b, " filter: \"%s\"\n", view.Filter) - } - } } if data.SafeOutputs.Messages != nil { diff --git a/pkg/cli/init_test.go b/pkg/cli/init_test.go index 59c98e35ab..21ed1253a3 100644 --- a/pkg/cli/init_test.go +++ b/pkg/cli/init_test.go @@ -291,8 +291,8 @@ func TestInitRepository_Campaign(t *testing.T) { t.Fatalf("Failed to read agentic-campaign-generator workflow: %v", err) } workflowStr := string(workflowContent) - if !strings.Contains(workflowStr, "description: \"Campaign generator") { - t.Errorf("Expected campaign-generator workflow to contain description") + if !strings.Contains(workflowStr, "Agentic Campaign generator") { + t.Errorf("Expected campaign-generator workflow to contain description with 'Agentic Campaign generator'") } if !strings.Contains(workflowStr, "create-agentic-campaign") { t.Errorf("Expected campaign-generator workflow to trigger on 'create-agentic-campaign' label") diff --git a/pkg/cli/templates/create-agentic-campaign.md b/pkg/cli/templates/create-agentic-campaign.md new file mode 100644 index 0000000000..e3c67e650f --- /dev/null +++ b/pkg/cli/templates/create-agentic-campaign.md @@ -0,0 +1,203 @@ +# Campaign Creation Instructions + +This file consolidates campaign design logic used across campaign creation workflows. + +--- + +## Campaign ID Generation + +Convert campaign names to kebab-case identifiers: +- Remove special characters, replace spaces with hyphens, lowercase everything +- Add timeline if mentioned (e.g., "security-q1-2025") + +**Examples:** +- "Security Q1 2025" → "security-q1-2025" +- "Node.js 16 to 20 Migration" → "nodejs-16-to-20-migration" + +**Conflict check:** Verify `.github/workflows/.campaign.md` doesn't exist. If it does, append `-v2`. + +--- + +## Workflow Discovery + +When identifying workflows for a campaign: + +1. **Scan for existing workflows:** + ```bash + ls .github/workflows/*.md # Agentic workflows + ls .github/workflows/*.yml | grep -v ".lock.yml" # Regular workflows + ``` + +2. **Check workflow types:** + - **Agentic workflows** (`.md` files): Parse frontmatter for description, triggers, safe-outputs + - **Regular workflows** (`.yml` files): Read name, triggers, jobs - assess AI enhancement potential + - **External workflows**: Check [agentics collection](https://github.com/githubnext/agentics) for reusable workflows + +3. **Match to campaign type:** + - **Security**: Look for workflows with "security", "vulnerability", "scan" keywords + - **Dependencies**: Look for "dependency", "upgrade", "update" keywords + - **Documentation**: Look for "doc", "documentation", "guide" keywords + - **Quality**: Look for "quality", "test", "lint" keywords + - **CI/CD**: Look for "ci", "build", "deploy" keywords + +4. **Workflow patterns:** + - **Scanner**: Identify issues → create-issue, add-comment + - **Fixer**: Create fixes → create-pull-request, add-comment + - **Reporter**: Generate summaries → create-discussion, update-issue + - **Orchestrator**: Manage campaign → auto-generated + +5. **Select 2-4 workflows:** + - Prioritize existing agentic workflows + - Identify 1-2 regular workflows that benefit from AI + - Include relevant workflows from agentics collection + - Create new workflows only if gaps remain + +--- + +## Safe Output Configuration + +Configure safe outputs using **least privilege** - only grant what's needed. + +### Operation Order (Required) + +When setting up project-based campaigns, operations must be performed in this order: + +1. **create-project** - Creates the GitHub project (includes creating views) +2. **update-project** - Adds items and fields to the project +3. **update-issue** - Updates issue metadata (if needed) +4. **assign-to-agent** - Assigns agents to issues (if needed) + +This order ensures fields exist before being referenced and issues exist before assignment. + +### Common Patterns + +**Scanner workflows:** +```yaml +allowed-safe-outputs: + - create-issue + - add-comment +``` + +**Fixer workflows:** +```yaml +allowed-safe-outputs: + - create-pull-request + - add-comment +``` + +**Project-based campaigns:** +```yaml +allowed-safe-outputs: + - create-project # Step 1: Create project with views + - update-project # Step 2: Add items and fields + - update-issue # Step 3: Update issue metadata (optional) + - assign-to-agent # Step 4: Assign agents (optional) +``` + +**Default (safe start):** +```yaml +allowed-safe-outputs: + - create-issue + - add-comment + - create-pull-request +``` + +**Security note:** Only add `update-issue`, `update-pull-request`, or `create-pull-request-review-comment` if specifically required. + +--- + +## Governance + +### Risk Levels + +- **High risk**: Sensitive changes, multiple repos, breaking changes → Requires 2 approvals + executive sponsor +- **Medium risk**: Cross-repo issues/PRs, automated changes → Requires 1 approval +- **Low risk**: Read-only, single repo → No approval needed + +### Ownership + +```yaml +owners: + - @ +executive-sponsors: # Required for high-risk + - @ +approval-policy: # For high/medium risk + required-approvals: <1-2> + required-reviewers: + - +``` + +--- + +## Campaign File Template + +```markdown +--- +id: +name: +description: +project-url: +workflows: + - + - +owners: + - @ +risk-level: +state: planned +allowed-safe-outputs: + - create-issue + - add-comment +--- + +# + + + +## Workflows + +### + + +## Timeline + +- **Start**: +- **Target**: +``` + +--- + +## Compilation + +Compile the campaign to generate orchestrator: + +```bash +gh aw compile +``` + +Generated files: +- `.github/workflows/.campaign.g.md` (orchestrator) +- `.github/workflows/.campaign.lock.yml` (compiled) + +--- + +## Best Practices + +1. **Start simple** - One clear goal per campaign +2. **Reuse workflows** - Check existing before creating new +3. **Minimal permissions** - Grant only what's needed +4. **Escalate when unsure** - Create issues for human review + +### DO: +- ✅ Use unique kebab-case campaign IDs +- ✅ Scan existing workflows before suggesting new +- ✅ Apply least privilege for safe outputs +- ✅ Follow operation order for project-based campaigns + +### DON'T: +- ❌ Create duplicate campaign IDs +- ❌ Skip workflow discovery +- ❌ Grant unnecessary permissions + +--- + +**Last Updated:** 2026-01-15 diff --git a/pkg/cli/templates/generate-agentic-campaign.md b/pkg/cli/templates/generate-agentic-campaign.md index 6a69e69381..72dc6c5b7c 100644 --- a/pkg/cli/templates/generate-agentic-campaign.md +++ b/pkg/cli/templates/generate-agentic-campaign.md @@ -82,28 +82,16 @@ allowed-safe-outputs: [create-issue, add-comment] 4. `assign-to-agent` (assigns agents, optional) **Example Safe Outputs Configuration for Project-Based Campaigns:** -```yaml -safe-outputs: - create-project: - max: 1 - github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" - target-owner: "${{ github.repository_owner }}" - views: # Views are created automatically when project is created - - name: "Campaign Roadmap" - layout: "roadmap" - filter: "is:issue is:pr" - - name: "Task Tracker" - layout: "table" - filter: "is:issue is:pr" - - name: "Progress Board" - layout: "board" - filter: "is:issue is:pr" - update-project: - max: 10 - github-token: "${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}" - update-issue: - assign-to-agent: -``` + +When configuring safe outputs, place the `views` array under `create-project` (not `update-project`): +- `create-project.views` - Views are created automatically when project is created +- `create-project.github-token` - Use the GH_AW_PROJECT_GITHUB_TOKEN secret +- `create-project.target-owner` - Use github.repository_owner expression + +The three standard views for campaigns are: +1. Campaign Roadmap (layout: roadmap) +2. Task Tracker (layout: table) +3. Progress Board (layout: board) **Risk Levels:** - High: Sensitive/multi-repo/breaking → 2 approvals + sponsor