Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/src/content/docs/agent-factory-status.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Daily Code Metrics and Trend Tracking Agent](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-code-metrics.md) | claude | [![Daily Code Metrics and Trend Tracking Agent](https://github.com/github/gh-aw/actions/workflows/daily-code-metrics.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-code-metrics.lock.yml) | - | - |
| [Daily Community Attribution Updater](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-community-attribution.md) | copilot | [![Daily Community Attribution Updater](https://github.com/github/gh-aw/actions/workflows/daily-community-attribution.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-community-attribution.lock.yml) | - | - |
| [Daily Compiler Quality Check](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-compiler-quality.md) | copilot | [![Daily Compiler Quality Check](https://github.com/github/gh-aw/actions/workflows/daily-compiler-quality.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-compiler-quality.lock.yml) | - | - |
| [Daily Compiler Threat Spec Optimizer](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-compiler-threat-spec-optimizer.md) | copilot | [![Daily Compiler Threat Spec Optimizer](https://github.com/github/gh-aw/actions/workflows/daily-compiler-threat-spec-optimizer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-compiler-threat-spec-optimizer.lock.yml) | - | - |
| [Daily Copilot PR Merged Report](https://github.com/github/gh-aw/blob/main/.github/workflows/copilot-pr-merged-report.md) | copilot | [![Daily Copilot PR Merged Report](https://github.com/github/gh-aw/actions/workflows/copilot-pr-merged-report.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/copilot-pr-merged-report.lock.yml) | `daily around 15:00 on weekdays` | - |
| [Daily Copilot Token Usage Audit](https://github.com/github/gh-aw/blob/main/.github/workflows/copilot-token-audit.md) | copilot | [![Daily Copilot Token Usage Audit](https://github.com/github/gh-aw/actions/workflows/copilot-token-audit.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/copilot-token-audit.lock.yml) | `daily around 12:00 on weekdays` | - |
| [Daily Documentation Healer](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-doc-healer.md) | claude | [![Daily Documentation Healer](https://github.com/github/gh-aw/actions/workflows/daily-doc-healer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-doc-healer.lock.yml) | - | - |
Expand Down Expand Up @@ -91,6 +92,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Daily Semgrep Scan](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-semgrep-scan.md) | copilot | [![Daily Semgrep Scan](https://github.com/github/gh-aw/actions/workflows/daily-semgrep-scan.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-semgrep-scan.lock.yml) | - | - |
| [Daily Sentrux Report](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-sentrux-report.md) | copilot | [![Daily Sentrux Report](https://github.com/github/gh-aw/actions/workflows/daily-sentrux-report.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-sentrux-report.lock.yml) | - | - |
| [Daily Skill Optimizer Improvements](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-skill-optimizer.md) | copilot | [![Daily Skill Optimizer Improvements](https://github.com/github/gh-aw/actions/workflows/daily-skill-optimizer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-skill-optimizer.lock.yml) | - | - |
| [Daily SPDD Spec Planner](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-spdd-spec-planner.md) | copilot | [![Daily SPDD Spec Planner](https://github.com/github/gh-aw/actions/workflows/daily-spdd-spec-planner.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-spdd-spec-planner.lock.yml) | - | - |
| [Daily Sub-Agent Optimizer](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-subagent-optimizer.md) | claude | [![Daily Sub-Agent Optimizer](https://github.com/github/gh-aw/actions/workflows/daily-subagent-optimizer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-subagent-optimizer.lock.yml) | - | - |
| [Daily Syntax Error Quality Check](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-syntax-error-quality.md) | copilot | [![Daily Syntax Error Quality Check](https://github.com/github/gh-aw/actions/workflows/daily-syntax-error-quality.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-syntax-error-quality.lock.yml) | - | - |
| [Daily Team Evolution Insights](https://github.com/github/gh-aw/blob/main/.github/workflows/daily-team-evolution-insights.md) | claude | [![Daily Team Evolution Insights](https://github.com/github/gh-aw/actions/workflows/daily-team-evolution-insights.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/daily-team-evolution-insights.lock.yml) | - | - |
Expand Down Expand Up @@ -150,6 +152,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Package Specification Librarian](https://github.com/github/gh-aw/blob/main/.github/workflows/spec-librarian.md) | copilot | [![Package Specification Librarian](https://github.com/github/gh-aw/actions/workflows/spec-librarian.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/spec-librarian.lock.yml) | - | - |
| [Plan Command](https://github.com/github/gh-aw/blob/main/.github/workflows/plan.md) | copilot | [![Plan Command](https://github.com/github/gh-aw/actions/workflows/plan.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/plan.lock.yml) | - | `/plan` |
| [Poem Bot - A Creative Agentic Workflow](https://github.com/github/gh-aw/blob/main/.github/workflows/poem-bot.md) | copilot | [![Poem Bot - A Creative Agentic Workflow](https://github.com/github/gh-aw/actions/workflows/poem-bot.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/poem-bot.lock.yml) | - | `/poem` |
| [PR Code Quality Reviewer](https://github.com/github/gh-aw/blob/main/.github/workflows/pr-code-quality-reviewer.md) | copilot | [![PR Code Quality Reviewer](https://github.com/github/gh-aw/actions/workflows/pr-code-quality-reviewer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/pr-code-quality-reviewer.lock.yml) | - | `/review` |
| [PR Nitpick Reviewer 🔍](https://github.com/github/gh-aw/blob/main/.github/workflows/pr-nitpick-reviewer.md) | copilot | [![PR Nitpick Reviewer 🔍](https://github.com/github/gh-aw/actions/workflows/pr-nitpick-reviewer.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/pr-nitpick-reviewer.lock.yml) | - | `/nit` |
| [PR Triage Agent](https://github.com/github/gh-aw/blob/main/.github/workflows/pr-triage-agent.md) | copilot | [![PR Triage Agent](https://github.com/github/gh-aw/actions/workflows/pr-triage-agent.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/pr-triage-agent.lock.yml) | - | - |
| [Python Data Visualization Generator](https://github.com/github/gh-aw/blob/main/.github/workflows/python-data-charts.md) | copilot | [![Python Data Visualization Generator](https://github.com/github/gh-aw/actions/workflows/python-data-charts.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/python-data-charts.lock.yml) | - | - |
Expand Down Expand Up @@ -193,6 +196,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Smoke Update Cross-Repo PR](https://github.com/github/gh-aw/blob/main/.github/workflows/smoke-update-cross-repo-pr.md) | copilot | [![Smoke Update Cross-Repo PR](https://github.com/github/gh-aw/actions/workflows/smoke-update-cross-repo-pr.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/smoke-update-cross-repo-pr.lock.yml) | - | - |
| [Smoke Workflow Call](https://github.com/github/gh-aw/blob/main/.github/workflows/smoke-workflow-call.md) | copilot | [![Smoke Workflow Call](https://github.com/github/gh-aw/actions/workflows/smoke-workflow-call.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/smoke-workflow-call.lock.yml) | - | - |
| [Smoke Workflow Call with Inputs](https://github.com/github/gh-aw/blob/main/.github/workflows/smoke-workflow-call-with-inputs.md) | copilot | [![Smoke Workflow Call with Inputs](https://github.com/github/gh-aw/actions/workflows/smoke-workflow-call-with-inputs.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/smoke-workflow-call-with-inputs.lock.yml) | - | - |
| [Stale PR Cleanup](https://github.com/github/gh-aw/blob/main/.github/workflows/stale-pr-cleanup.md) | copilot | [![Stale PR Cleanup](https://github.com/github/gh-aw/actions/workflows/stale-pr-cleanup.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/stale-pr-cleanup.lock.yml) | - | - |
| [Stale Repository Identifier](https://github.com/github/gh-aw/blob/main/.github/workflows/stale-repo-identifier.md) | copilot | [![Stale Repository Identifier](https://github.com/github/gh-aw/actions/workflows/stale-repo-identifier.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/stale-repo-identifier.lock.yml) | - | - |
| [Static Analysis Report](https://github.com/github/gh-aw/blob/main/.github/workflows/static-analysis-report.md) | claude | [![Static Analysis Report](https://github.com/github/gh-aw/actions/workflows/static-analysis-report.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/static-analysis-report.lock.yml) | - | - |
| [Step Name Alignment](https://github.com/github/gh-aw/blob/main/.github/workflows/step-name-alignment.md) | claude | [![Step Name Alignment](https://github.com/github/gh-aw/actions/workflows/step-name-alignment.lock.yml/badge.svg)](https://github.com/github/gh-aw/actions/workflows/step-name-alignment.lock.yml) | `daily` | - |
Expand Down
123 changes: 123 additions & 0 deletions docs/src/content/docs/reference/safe-outputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,27 @@ See [Cross-Repository Operations](/gh-aw/reference/cross-repository/) for compre
> [!TIP]
> Use `footer: false` to omit the AI-generated footer while preserving workflow-id markers for searchability. See [Footer Control](/gh-aw/reference/footers/) for details.

#### `create_issue` tool field schema (`fields`)

| Parameter | Type | Required | Description | Example |
|-----------|------|----------|-------------|---------|
| `fields` | `array<object>` | No | Optional issue field updates to apply immediately after issue creation. | `[{"name":"Priority","value":"P1"}]` |
| `fields[].name` | `string` | Yes (when item exists) | Issue field display name. Match the repository field label (case-insensitive matching is supported). | `"Priority"` |
| `fields[].value` | `string \| number` | Yes (when item exists) | Field value. Use a number for numeric fields; otherwise use a string (single select, iteration title, date `YYYY-MM-DD`, text). | `"Sprint 42"` |

```json
{
"type": "create_issue",
"title": "Triage: flaky parser test",
"body": "Intermittent failure detected in CI.",
"fields": [
{ "name": "Priority", "value": "High" },
{ "name": "Iteration", "value": "Sprint 42" },
{ "name": "Story Points", "value": 3 }
]
}
```

#### Auto-Expiration

The `expires` field auto-closes issues after a time period. Supports day-string format (`7d`, `2w`, `1m`, `1y`, `2h`) or `false` to disable expiration. Integer values (e.g., `expires: 7`) are also accepted as shorthand for days and can be migrated to string format with `gh aw fix --write`. Generates `agentics-maintenance.yml` workflow that runs at the minimum required frequency based on the shortest expiration time across all workflows:
Expand Down Expand Up @@ -395,6 +416,7 @@ When using `target: "*"`, the agent must provide `issue_number` or `item_number`
- `replace-island`: Updates a specific section marked with HTML comments

Agent output format: `{"type": "update_issue", "issue_number": 123, "operation": "append", "body": "..."}`. The `operation` field is optional (defaults to `append`).
For issue field updates, use [`set_issue_field`](#set-issue-field-set-issue-field).

### Pull Request Updates (`update-pull-request:`)

Expand Down Expand Up @@ -454,6 +476,107 @@ safe-outputs:

Agent calls `set_issue_field` with `value`, and either `field_name` (preferred) or `field_node_id`. It can also pass `issue_number`; if omitted, the triggering issue is targeted.

#### `set_issue_field` tool schema

| Parameter | Type | Required | Description | Example |
|-----------|------|----------|-------------|---------|
| `value` | `string` | Yes | Field value to set. For date fields use `YYYY-MM-DD`; for single-select use an existing option label. | `"High"` |
| `field_name` | `string` | Conditional* | Field display name used for automatic discovery. | `"Priority"` |
| `field_node_id` | `string` | Conditional* | GraphQL node ID of the field, used to skip name discovery. | `"PVTF_lADO..."` |
| `issue_number` | `number \| string` | No | Issue number to update. If omitted, uses the triggering issue. | `123` |
| `repo` | `string` | No | Optional `owner/repo` override when cross-repository updates are enabled. | `"owner/repo"` |

\* Provide **at least one** of `field_name` or `field_node_id`.

```json
{
"type": "set_issue_field",
"issue_number": 123,
"field_name": "Priority",
"value": "High"
}
```

#### Issue field discovery mechanism

When `field_name` is provided, the handler discovers available issue fields for the target repository and resolves the matching field automatically.

1. Agent calls `set_issue_field` with `field_name`.
2. Handler fetches available issue fields and resolves the field by label.
3. If the field is unknown, the error includes available field names and guidance to use `field_node_id`.

```json
{
"type": "set_issue_field",
"field_name": "Urgency",
"value": "P0"
}
```

Example actionable error:

```text
Issue field "Urgency" not found. Available fields: Priority, Iteration, Story Points.
Use a listed field_name or provide field_node_id to bypass discovery.
```

Retrying with explicit ID:

```json
{
"type": "set_issue_field",
"field_node_id": "PVTF_lADOExampleFieldId",
"value": "P0"
}
```

#### End-to-end triage workflow example (discovery + field updates)

```yaml wrap
---
on:
issues:
types: [opened, reopened]

permissions:
contents: read
issues: write

safe-outputs:
create-issue:
title-prefix: "[triage] "
labels: [triage]
allowed-fields: [Priority, Iteration, Story Points]
update-issue:
target: triggering
status:
body:
set-issue-field:
target: triggering
allowed-fields: [Priority, Iteration]
---
```

```json
[
{
"type": "update_issue",
"body": "Initial triage complete. Escalating for review.",
"operation": "append"
},
{
"type": "set_issue_field",
"field_name": "Priority",
"value": "High"
},
{
"type": "set_issue_field",
"field_name": "Iteration",
"value": "Sprint 42"
}
]
```

### Project Creation (`create-project:`)

Creates new GitHub Projects V2 boards. Requires a write-capable PAT or GitHub App token ([project token authentication](/gh-aw/patterns/project-ops/#project-token-authentication)); default `GITHUB_TOKEN` lacks Projects v2 access. Supports optional view configuration to create custom project views at creation time.
Expand Down