Skip to content

Testing workflow changes

This guide explains how to test changes to Fullsend's GitHub Actions workflows, composite actions, and the CLI itself.

References

There are independent version reference inputs that control different parts of the system:

InputControlsWhere set
@<ref> on uses:Which reusable workflow YAML runsThe uses: line in the caller workflow
fullsend_versionWhich fullsend CLI binary is installedPassed as a with: input

When no release exists for fullsend_version, action.yml falls back to cloning and building from source at that ref (see the install-method=source path).

If uses: and fullsend_version diverge, the workflows/agents and CLI diverge, potentially causing mismatch in behavior and failures.

Install or re-install with --vendor to copy reusable workflows, actions, agent definitions, and the CLI binary from your local checkout into the config repo or .fullsend/ directory:

bash
fullsend admin install "$ORG" \
  --vendor \
  --fullsend-source "$PWD" \
  --skip-app-setup \
  --skip-mint-check \
  --mint-url "$MINT_URL" \
  # ... other flags

After changing reusable workflows or agent content, re-run install (or fullsend github setup) with --vendor to refresh vendored files. fullsend github sync-scaffold updates thin caller templates and auto-detects vendored vs layered mode from .defaults/action.yml presence.

Runtime skips the upstream sparse checkout when .defaults/action.yml is present (vendored install) and stages content from .defaults/ instead.

See ADR 0047 for the full distribution model.

Layered installs: pin upstream ref

In layered mode (default), thin callers reference upstream reusable workflows at fullsend-ai/fullsend@v0. To test a specific upstream ref without vendoring, change the uses: ref and matching with: inputs in the thin caller workflows.

Note: for forks, change the fullsend-ai/fullsend portion to point to your fork.

Per-repo mode

In your repository modify the dispatch job at .github/workflows/fullsend.yaml:

yaml
# .github/workflows/fullsend.yaml
jobs:
  dispatch:
    # [...]
    uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@<YOUR_BRANCH>
    with:
      # [...]
      fullsend_version: <YOUR_BRANCH>
      # [...]

Per-org mode

WARNING: this impacts all repositories, so proceed with care. You can install your test repository using per-repo mode to avoid this problem.

In your .fullsend repository change the references for the reusable-<stage>.yml you want to test (triage in the example below):

yaml
# .github/workflows/triage.yml
jobs:
  triage:
    # [...]
    uses: fullsend-ai/fullsend/.github/workflows/reusable-triage.yml@<YOUR_BRANCH>
    with:
      # [...]
      fullsend_version: <YOUR_BRANCH>
      # [...]

Then push this change and trigger a Fullsend action on your test repository: /fs-triage, /fs-code, ... When the ref is deleted from fullsend-ai/fullsend (branch deleted or commit amended), revert this back to the desired reference.