Official agent skill

Temporary Id Safe Output

by github in github/gh-aw

Add temporary ID support to safe-output jobs end to end. An agent skill from github/gh-aw.

OfficialMITAuto-check passedTesting & QA

Install Temporary Id Safe Output

skills CLI
$ npx skills add github/gh-aw --skill temporary-id-safe-output -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install github/gh-aw temporary-id-safe-output --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/temporary-id-safe-output .claude/skills/temporary-id-safe-output && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
temporary-id-safe-output
GitHub stars
5.3k
Token cost
~1.9k tokens
SKILL.md length
611 words
Files
1
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

Add temporary ID support to safe-output jobs end to end. An agent skill from github/gh-aw.

  • Works in 4 steps: Shared Module: temporary_id.cjs → Producer Job: create_issue → Consumer Job: Adding Temporary ID Support → …
  • Testing & QA work in your project
  • SKILL.md covers Problem Statement, Temporary ID Format, Implementation Components and Example Usage, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Temporary Id Safe Output is an agent skill from github/gh-aw, published by the product's own GitHub organization. Add temporary ID support to safe-output jobs end to end.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA. The repository describes itself as: GitHub Agentic Workflows. The licence is MIT.

When your agent uses it

  • Testing & QA work in your project

Example prompts

  • “/temporary-id-safe-output”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Shared Module: temporary_id.cjs
  2. Producer Job: create_issue
  3. Consumer Job: Adding Temporary ID Support
  4. Failure Handling

What it can do on your machine

Read from SKILL.md and the folder at commit eb63040. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, go, yaml and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Temporary Id Safe Output loads about 1.9k tokens when it runs. Until then it costs about 20 tokens; SKILL.md has 611 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~20
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from github/gh-aw at commit eb63040, republished under its MIT licence (© github). 611 words, ~1,904 tokens.

Download SKILL.mdSave it as .claude/skills/temporary-id-safe-output/SKILL.md (or your agent's skills folder).
name
temporary-id-safe-output
description
Add temporary ID support to safe-output jobs end to end.

Adding Temporary ID Support to Safe Output Jobs

Use this implementation plan for temporary ID support in safe output jobs. Temporary IDs let agents reference newly created issues in the same run before real issue numbers exist.

Problem Statement

When an agent creates a parent issue and immediately links sub-issues in the same run, it does not know the real issue number until create_issue completes. Temporary IDs bridge this gap with placeholders resolved at execution time.

Temporary ID Format

Temporary IDs follow the pattern aw_[A-Za-z0-9]{3,8} where:

  • aw_ is a fixed prefix identifying agentic workflow temporary IDs
  • XXXXXXXX is a 3-8 character alphanumeric string (A-Za-z0-9)

Example: aw_abc, aw_abc123, aw_Test123

Implementation Components

1. Shared Module: temporary_id.cjs

Location: actions/setup/js/temporary_id.cjs

This module provides shared utilities for temporary ID handling:

javascript
// Core functions
generateTemporaryId()           // Generate new temporary ID
isTemporaryId(value)            // Check if value is a temporary ID
normalizeTemporaryId(tempId)    // Normalize to lowercase for map lookups
loadTemporaryIdMap()            // Load map from GH_AW_TEMPORARY_ID_MAP env var
resolveIssueNumber(value, map)  // Resolve value to issue number (supports temp IDs)
replaceTemporaryIdReferences(text, map)  // Replace #aw_XXX references in text
2. Producer Job: create_issue

The create_issue job outputs a temporary ID map that other jobs can consume:

Go changes (pkg/workflow/create_issue.go):

  • No changes needed - already outputs temporary_id_map

JavaScript changes (actions/setup/js/create_issue.cjs):

  • Generate temporary ID for each created issue
  • Build map of temporary_id -> issue_number
  • Output map via core.setOutput("temporary_id_map", JSON.stringify(map))
3. Consumer Job: Adding Temporary ID Support

For each safe output job that needs to resolve temporary IDs:

Step 1: Update Go Job Builder

In pkg/workflow/<job_name>.go:

  1. Add createIssueJobName parameter to the build function:
go
func (c *Compiler) build<JobName>Job(data *WorkflowData, mainJobName string, createIssueJobName string) (*Job, error) {
  1. Add environment variable to pass the temporary ID map:
go
if createIssueJobName != "" {
    customEnvVars = append(customEnvVars, fmt.Sprintf("          GH_AW_TEMPORARY_ID_MAP: ${{ needs.%s.outputs.temporary_id_map }}\n", createIssueJobName))
}
  1. Add create_issue to the job's needs array:
go
needs := []string{mainJobName}
if createIssueJobName != "" {
    needs = append(needs, createIssueJobName)
}
  1. Update the SafeOutputJobConfig to use the dynamic needs:
go
return c.buildSafeOutputJob(data, SafeOutputJobConfig{
    // ...
    Needs: needs,
    // ...
})
Step 2: Update Compiler Jobs

In pkg/workflow/compiler_jobs.go:

Pass the createIssueJobName when building the job:

go
job, err := c.build<JobName>Job(data, mainJobName, createIssueJobName)
Step 3: Update JavaScript Script

In pkg/workflow/js/<job_name>.cjs:

  1. Import the temporary ID utilities:
javascript
const { loadTemporaryIdMap, resolveIssueNumber } = require("./temporary_id.cjs");
  1. Load the temporary ID map at the start of main():
javascript
const temporaryIdMap = loadTemporaryIdMap();
if (temporaryIdMap.size > 0) {
    core.info(`Loaded temporary ID map with ${temporaryIdMap.size} entries`);
}
  1. Use resolveIssueNumber() to resolve issue numbers:
javascript
const resolved = resolveIssueNumber(item.issue_number, temporaryIdMap);
if (resolved.errorMessage) {
    core.warning(`Failed to resolve issue: ${resolved.errorMessage}`);
    continue;
}
const issueNumber = resolved.resolved;
if (resolved.wasTemporaryId) {
    core.info(`Resolved temporary ID '${item.issue_number}' to issue #${issueNumber}`);
}
Step 4: Update Agent Ingestion Validation

In actions/setup/js/collect_ndjson_output.cjs:

Add validation for fields that accept temporary IDs:

javascript
function isValidIssueNumberOrTemporaryId(value) {
    if (typeof value === "number" && Number.isInteger(value) && value > 0) {
        return true;
    }
    if (typeof value === "string" && /^aw_[0-9a-f]{12}$/i.test(value)) {
        return true;
    }
    return false;
}

Use this validation for fields like parent_issue_number, sub_issue_number, etc.

4. Failure Handling

When temporary ID resolution fails, the job should:

  • Log a warning with core.warning() instead of failing with core.setFailed()
  • Continue processing other items
  • Include failures in the step summary
  • Complete successfully with warnings

This ensures that:

  • Partial success is possible (some links may work while others fail)
  • The workflow doesn't fail catastrophically due to a single resolution failure
  • Users can review warnings in the step summary
Show full SKILL.md (241 more words)Show less

Example Usage

Workflow Configuration
yaml
safe-outputs:
  create-issue:
    title-prefix: "[Parent] "
    labels: [tracking]
    max: 3
  link-sub-issue:
    max: 10
Agent Output
json
{"type": "create_issue", "temporary_id": "aw_abc123", "title": "Parent: Feature X", "body": "..."}
{"type": "link_sub_issue", "parent_issue_number": "aw_abc123", "sub_issue_number": 42}
{"type": "link_sub_issue", "parent_issue_number": "aw_abc123", "sub_issue_number": 43}
Execution Flow
  1. main job: Agent generates output with temporary ID aw_abc123
  2. create_issue job: Creates issue #100, outputs {"aw_abc123": 100}
  3. link_sub_issue job:
    • Loads temporary ID map
    • Resolves aw_abc123 → 100
    • Links issues #42 and #43 as sub-issues of #100

Jobs That Support Temporary IDs

JobField(s)Status
link_sub_issueparent_issue_number, sub_issue_number✅ Implemented
add_commentissue_number (via text replacement)✅ Implemented
update_issueissue_number🔄 Can be added
close_pull_request-N/A (uses PR numbers)

Testing

Unit Tests

Add tests in actions/setup/js/temporary_id.test.cjs for:

  • isTemporaryId() with valid and invalid inputs
  • resolveIssueNumber() with temporary IDs and regular numbers
  • loadTemporaryIdMap() with various JSON inputs
Integration Tests

Add tests in pkg/workflow/<job_name>_dependencies_test.go to verify:

  • Job includes create_issue in needs when configured
  • GH_AW_TEMPORARY_ID_MAP env var is set correctly
  • Job works without create_issue dependency

Security Considerations

  1. Temporary IDs are only valid within a single workflow run
  2. The map is passed via environment variables (not exposed externally)
  3. Agents cannot forge temporary IDs to reference issues from other workflows
  4. Resolution failures are logged but don't expose the temporary ID map contents

Checklist for Adding Support to a New Job

  • Update Go job builder to accept createIssueJobName parameter
  • Add GH_AW_TEMPORARY_ID_MAP environment variable
  • Update needs array to include create_issue conditionally
  • Update compiler_jobs.go to pass createIssueJobName
  • Import temporary ID utilities in JavaScript script
  • Use resolveIssueNumber() for issue number fields
  • Update validation in collect_ndjson_output.cjs if needed
  • Add unit tests for the resolution logic
  • Add integration tests for job dependencies
  • Update documentation

© github, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/temporary-id-safe-output of github/gh-aw.

Open the folder on GitHubat commit eb63040

Compare with similar skills

Temporary Id Safe Output next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Temporary Id Safe Output compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Temporary Id Safe Output this skillgithub/gh-aw5.3k—~1.9kAutomated safety check: PassMIT
Web Application Testinganthropics/skills180k51 repos~966Automated safety check: PassApache-2.0
Diagnosing Bugsfossasia/eventyay-interpretation1.6k31 repos~2.1kAutomated safety check: PassApache-2.0
TDDfossasia/eventyay-interpretation1.6k28 repos~1.1kAutomated safety check: PassApache-2.0
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
TDDsanity-io/sanity6.4k20 repos~1kAutomated safety check: PassMIT

Similar skills

  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed
  • Diagnosing Bugs

    fossasia/eventyay-interpretation

    Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 31 repos~2.1k tokens
    Testing & QAAuto-check passed
  • TDD

    fossasia/eventyay-interpretation

    Test-driven development. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 28 repos~1.1k tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • TDD

    sanity-io/sanity

    Official

    Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 20 repos~1k tokens
    Testing & QAAuto-check passed
  • Context Driven Development

    Ibrahim-3d/orchestrator-supaconductor

    A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…

    380 GitHub starsUsed in 8 repos~2.9k tokens
    Testing & QAAuto-check passed

More from github/gh-aw

All 52 skills in this repo
  • Official

    Drives a real browser from the command line with playwright-cli to open pages, interact, mock requests, save state and work with Playwright tests.

    5.3k GitHub starsUsed in 23 repos~2.8k tokens
    Auto-check passed
  • Official

    Designs and verifies a deterministic grader that measures whether a GitHub Agentic Workflow run reached its real-world or repository outcome.

    5.3k GitHub stars~6.8k tokensUpdated today
    Auto-check passed
  • Official

    Scaffolds, edits, reloads and debugs a canvas extension that the GitHub Copilot CLI can open in its side panel.

    5.3k GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Official

    Drives an open pull request to merge-ready from inside a GitHub Copilot cloud agent, resolving review threads and local checks concurrently, without merging or retriggering CI.

    5.3k GitHub stars~3.8k tokensUpdated today
    Auto-check: warnings
  • Official

    Bumps gh-aw's pinned gh-aw-firewall version, rebuilds generated artifacts, and flags upstream spec or schema changes that need follow-up work.

    5.3k GitHub stars~899 tokensUpdated today
    Auto-check passed
  • Official

    Guide to the console struct tag system in gh-aw: headers, titles, number and cost formats, omitempty, and how structs, slices and maps render in the terminal.

    5.3k GitHub stars~736 tokensUpdated today
    Auto-check passed

Categories

Questions about Temporary Id Safe Output

What does Temporary Id Safe Output do?

Add temporary ID support to safe-output jobs end to end. An agent skill from github/gh-aw. Temporary Id Safe Output is an agent skill from github/gh-aw, published by the product's own GitHub organization. Add temporary ID support to safe-output jobs end to end.

When should I use Temporary Id Safe Output?

Temporary Id Safe Output fits situations like: testing & QA work in your project.

How do I install Temporary Id Safe Output in Claude Code?

Run `npx skills add github/gh-aw --skill temporary-id-safe-output -a claude-code`. Or copy the skill folder (.github/skills/temporary-id-safe-output in github/gh-aw) into .claude/skills/temporary-id-safe-output in your project. Claude Code loads it when a task matches its description.

How do I install Temporary Id Safe Output in Codex?

Run `npx skills add github/gh-aw --skill temporary-id-safe-output -a codex`. Or copy the skill folder (.github/skills/temporary-id-safe-output in github/gh-aw) into .agents/skills/temporary-id-safe-output in your project. Codex loads it when a task matches its description.

Can I use Temporary Id Safe Output in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add github/gh-aw --skill temporary-id-safe-output -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/temporary-id-safe-output, .gemini/skills/temporary-id-safe-output, .github/skills/temporary-id-safe-output and .opencode/skills/temporary-id-safe-output in your project.

What does Temporary Id Safe Output need to run?

SKILL.md names no scripts, command-line tools or credentials: Temporary Id Safe Output is instructions for the agent only.

Does Temporary Id Safe Output access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Temporary Id Safe Output safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Temporary Id Safe Output use?

Temporary Id Safe Output is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Temporary Id Safe Output use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Temporary Id Safe Output?

Skills that share tags, products or a category with Temporary Id Safe Output: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (fossasia/eventyay-interpretation, 1.6k stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Temporary Id Safe Output?

github (a GitHub organization, an official publisher) maintains it in github/gh-aw, which has 5,350 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 7, 2026.

Source: github/gh-aw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.