You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
${{ github.aw.import-inputs.* }} expressions are supported inside an imported workflow's body — in tools:, safe-outputs:, etc. — but not in the imports: section of that same workflow's frontmatter.
This makes it impossible to build composable shared workflows that forward their own inputs to other shared workflows they depend on.
Minimal Example
Consider a shared workflow shared/daily-report.md that bundles repo-memory and discussion publishing into a single reusable component:
---
# shared/daily-report.mdimport-schema:
branch-name:
type: stringrequired: truedescription: "Branch name for repo-memory storage"target-repo:
type: stringrequired: truedescription: "Target repo for publishing discussions"title-prefix:
type: stringrequired: truedescription: "Title prefix for created discussions"imports:
- uses: shared/repo-memory-standard.mdwith:
branch-name: ${{ github.aw.import-inputs.branch-name }} # ❌ not resolveddescription: "Daily report results"
- uses: shared/daily-audit-discussion.mdwith:
target-repo: ${{ github.aw.import-inputs.target-repo }} # ❌ not resolvedtitle-prefix: ${{ github.aw.import-inputs.title-prefix }} # ❌ not resolvedexpires: 3d
---
Currently, this silently uses unresolved literal strings (or errors out), forcing every consuming workflow to import shared/repo-memory-standard.md and shared/daily-audit-discussion.md individually with hardcoded with: values — defeating the purpose of shared workflows.
Expected Behavior
${{ github.aw.import-inputs.* }} expressions are resolved before the imports: section is processed, so parameterized shared workflows can forward inputs to their own nested imports.
Why This Matters
Right now the composability ceiling for shared workflows is one level deep: a shared workflow can use its inputs in tools: and safe-outputs:, but it cannot pass those inputs to another shared workflow it depends on. Supporting expression interpolation in imports: would unlock multi-level composition and significantly reduce boilerplate in consumer workflows.
Activity
Update community contributions in README