Skip to main content

Golden Path Test Cases

The manual runs that must pass for every release, on both the extension and the CLI.

Three scenarios, executed in order. They chain — G2 produces the collection G3 updates — so set up once and get all three from one pass. Each covers ground automation cannot: whether a real AI agent picks up what we installed, and whether a real GitHub runner publishes what we scaffolded.

For which parts already have automated coverage and which do not, see the Full Test Plan. This page is the run sheet.

Before You Start

Run the automated suites first — see Validation.

You need a clean VS Code profile, Kiro installed, a GitHub account you can create a repository under, and the CLI (ai-primitives-hub) available.

Do not reset state between G2 and G3.


G1 — Collection User

Install, connect a hub, install content at both scopes for both hosts, and confirm the AI agent picks it up.

#StepExpected result
G1.1Install the compiled extension into a clean VS Code profile, and into a clean Kiro profile; reload eachActivates cleanly in both, both views render, setup flow appears once
G1.2In each host, read the [host-app] detectHostApp: line in the Output channelResolves to vscode in VS Code and kiro in Kiro — not the vscode fallback while running in Kiro
G1.3Connect a hub and confirm it exposes a GitHub sourceThe source enumerates its bundles
G1.4Install a collection containing every primitive kind plus a README.md, covering all four combinations belowFiles land at the documented destination each time
G1.5Check every primitive kind landed somewhereNothing silently dropped
G1.6Open GitHub Copilot Chat in VS CodePrompts invocable, instructions applied, agents/chatmodes selectable
G1.7Open KiroSteering files in effect, agents and skills available
G1.8Open the bundle details viewThe collection README.md renders correctly
G1.9Repeat G1.4 through the CLISame files, same destinations, same lockfile result

Install matrix for G1.4 — same GitHub source throughout, varying scope and host:

ScopeHostDestination
userVS Code~/.copilot/{prompts,instructions,agents,skills,hooks,plugins}/
repositoryVS Code<workspace>/.github/{prompts,instructions,agents,skills,hooks,plugins}/
userKiro~/.kiro/{steering,agents,skills}/
repositoryKiro<workspace>/.kiro/{steering,agents,skills}/

Kiro folds prompts/ and instructions/ into steering/; VS Code routes chatmodes/ into agents/. deployment-manifest.yml and README.md must not appear in the installed layout — the README is checked in the details view at G1.8.

G1.6 and G1.7 are the point of this scenario. Files in the right directory is not the same as the agent recognizing them.


G2 — Collection Author

Scaffold, publish through a real GitHub runner, then consume it back through the hub.

#StepExpected result
G2.1Scaffold a new project into an empty folder; add primitives of each kind and a README.mdDocumented structure created, including the CI workflow
G2.2Validate the collection locallyPasses
G2.3Create a real GitHub repository and pushThe scaffolded runner configuration is picked up and the workflow runs
G2.4Let the workflow completeValidation passes on the runner and a release is pushed to GitHub with the expected artifacts
G2.5Add that repository manually as a source and sync itThe new collection is discovered
G2.6Install itInstalls correctly, routed per host as in G1
G2.7Add the same content as a local source and syncDiscovered and installable from the local path too
G2.8Run G2.1, G2.2 and G2.5–G2.7 through the CLISame result as the extension

G2.3 and G2.4 fail more often than anything else here and are invisible to local testing — the scaffolded runner configuration has to work on GitHub's actual runners and actually produce a release.


G3 — Update

Runs immediately after G2, against the collection you just published.

#StepExpected result
G3.1Change the collection from G2 and pushThe workflow runs again
G3.2Let it publishA new release with a correctly incremented version — not a re-tag, not a skipped bump
G3.3Wait for the extension's update check, or trigger itThe user is notified an update is available
G3.4Apply the update from the extensionVersion advances; content replaced, not duplicated
G3.5Check for updates from the CLIProposed automatically, or reported when checked
G3.6Apply the update from the CLISame result as G3.4
G3.7Verify the updated primitives in Copilot and KiroAgents pick up the new content; stale content is gone

This closes the loop the other two open: author publishes → consumer is told → consumer updates → the agent sees the change. Each link is covered by automation in isolation; the chain is not.


Sign-Off

Record this in the release issue. All three are mandatory on both delivery layers.

ScenarioExtensionCLIOwnerDate
G1Collection user
G2Collection author
G3Update

For a MAJOR release, two plans from the full test plan also block, because both touch state users already have on disk:

PlanResultOwnerDate
TP-11Repository scope and lockfile
TP-17Upgrade and migration

Blocking rules:

  • G1, G2 and G3 must pass on both the extension and the CLI.
  • TP-11 and TP-17 block a major release outright.
  • Anything else is fixed or recorded as a known issue in the release notes, with an owner and a target release.

See Also

  • Full Test Plan — all 19 plans, with per-step automated-coverage checklists
  • Testing — running the automated suites
  • Validation — local validation commands
  • Releasing — version bump and publish mechanics