$npx -y skills add DanWahlin/github-azure-agentic-journeys --skill journey-runnerRun an agentic journey end-to-end: preflight the host, extract prompts, execute them in an isolated workspace, build, deploy to Azure, verify with real requests and screenshots, and clean up only owned resources. USE FOR: test a journey, run a journey end-to-end, validate journey
| 1 | # Journey Runner Skill |
| 2 | |
| 3 | Run a journey like a learner would, but with strict preflight, isolated state, evidence-backed verification, and scoped cleanup. The workflow must work on Windows, macOS, and Linux. |
| 4 | |
| 5 | ## Required Runner Tools |
| 6 | |
| 7 | The runner itself requires: |
| 8 | |
| 9 | - Node.js 24 LTS or later |
| 10 | - Azure CLI |
| 11 | - Azure Developer CLI (`azd`) 1.28.0 or later |
| 12 | - GitHub Copilot CLI |
| 13 | |
| 14 | Screenshot runs additionally require the local Playwright package and bundled Chromium under `scripts/`. Installation options for all operating systems are in [`../../../docs/tool-installation.md`](../../../docs/tool-installation.md). |
| 15 | |
| 16 | Do not install system tools during a run. Report the missing tool, its install link, and the validation command, then stop before generating code or creating Azure resources. Project-local `npm ci` for the checked-in runner helpers is allowed only during explicit runner setup, not as a surprise halfway through a journey. |
| 17 | |
| 18 | ## Inputs and Defaults |
| 19 | |
| 20 | Inputs: |
| 21 | |
| 22 | 1. Journey path, such as `journeys/smart-todo/` |
| 23 | 2. Stack choice when the journey supports multiple stacks |
| 24 | 3. Azure subscription for deployment runs |
| 25 | 4. Cleanup policy: `after-verification` or `leave-running` |
| 26 | |
| 27 | Defaults: |
| 28 | |
| 29 | | Behavior | Default | |
| 30 | |---|---| |
| 31 | | Deploy to Azure | Yes, when the journey contains a deployment phase | |
| 32 | | Cleanup | `after-verification` | |
| 33 | | Stack | Use the only option; ask before starting when multiple materially different stacks exist | |
| 34 | | Verification failure | Record the failure, attempt one evidence-based repair, then stop that phase if it still fails | |
| 35 | | Output | Concise phase summary plus artifact paths and actual command results | |
| 36 | |
| 37 | Only use `leave-running` when the user explicitly requests it. |
| 38 | |
| 39 | ## Step 0: Parse the Journey |
| 40 | |
| 41 | Read the journey's `README.md`, `PLAN.md` when present, and every associated journey skill. Extract: |
| 42 | |
| 43 | - Journey type and phases |
| 44 | - Prompts to send to Copilot |
| 45 | - Commands and generated scripts |
| 46 | - Required and optional host tools |
| 47 | - Local ports |
| 48 | - Deployment outputs |
| 49 | - Verification criteria |
| 50 | - Platform gates such as Xcode |
| 51 | |
| 52 | Build a prerequisite list from the journey's own prerequisite section. Do not rely on a hard-coded generic list when the journey requires `sqlcmd`, Azure Functions Core Tools, or another host tool. AIMarket deployment images must build in ACR, and Superset must run Helm and `kubectl` inside Azure through AKS run command. |
| 53 | |
| 54 | Before execution, print a plan containing the journey, stack, host OS/architecture, phases, required tools, optional tools, planned ports, deployment choice, and cleanup policy. |
| 55 | |
| 56 | ## Step 1: Cross-Platform Preflight |
| 57 | |
| 58 | Detect the host with Node.js `process.platform`, `process.arch`, and `os.release()`. Never infer the operating system from path syntax. |
| 59 | |
| 60 | Run the helper from this skill directory: |
| 61 | |
| 62 | ```text |
| 63 | node scripts/check-prerequisites.mjs --required node,az,azd,copilot,<journey-tools> --optional <optional-tools> |
| 64 | ``` |
| 65 | |
| 66 | Journey-specific minimums: |
| 67 | |
| 68 | | Journey | Additional required tools | Optional or platform-gated tools | |
| 69 | |---|---|---| |
| 70 | | Grafana | None | Playwright for screenshots | |
| 71 | | n8n | Node.js 24 LTS or later | Playwright for screenshots | |
| 72 | | Superset | Node.js 24 LTS or later | Playwright for screenshots; local `kubectl` and Helm only for optional direct cluster work | |
| 73 | | AIMarket | Node.js 24 LTS or later, GitHub CLI | Playwright; Docker only for optional local container work | |
| 74 | | SmartTodo | Node.js 24 LTS or later, Azure Functions Core Tools v4, `sqlcmd` | Project-local Azurite for local execution; Docker for alternate stacks or local SQL; Xcode 16+ only for macOS iOS execution | |
| 75 | |
| 76 | ### Authentication preflight |
| 77 | |
| 78 | Check Azure CLI and `azd` separately: |
| 79 | |
| 80 | 1. `az account show` must succeed and show the intended subscription. |
| 81 | 2. Configure `azd` to reuse Azure CLI authentication with `azd config set auth.useAzCliAuth true`. |
| 82 | 3. Run an `azd` command that reads account/environment state before creating resources. |
| 83 | 4. If Azure CLI works but `azd` still reports an expired token, stop and report the mismatch. Do not assume `az login` fixed `azd`. |
| 84 | |
| 85 | ### Architecture preflight |
| 86 | |
| 87 | For Container Apps images, compare host architecture with the required `linux/amd64` target. |
| 88 | |
| 89 | - Require ACR cloud builds targeting `linux/amd64` on every host architecture. |
| 90 | - Do not require Docker, Buildx, AMD64 emulation, or privileged QEMU/binfmt handlers for deployment. |
| 91 | - Require frontend Dockerfiles that ACR can build without host-specific BuildKit variables. |
| 92 | |
| 93 | ### Mobile pla |