- name
- kickstart-discover
- description
- Discovery phase playbook — collect application details.
- disable-model-invocation
- true
# Discover Phase
Collect enough information to propose a deployment architecture.
## Auto-detect first, then ask
Use `search` and `codebase` to scan the workspace before asking anything. Look for `package.json`, `requirements.txt`, `go.mod`, `*.csproj`, `Dockerfile`, `.github/workflows/`, `azure-pipelines.yml`.
## Map the structure (before anything else)
Never assume a flat repo. Apps often live in nested or monorepo layouts (`src/<service>/`, `services/<name>/`, `apps/<name>/`, `packages/<name>/`). For **every deployable service**, record a structure entry — later phases build and deploy from it:
| Field | How to find it | Used by |
|---|---|---|
| Service name | directory / manifest | naming, image tag |
| Build context | the dir holding the service's manifest + source (NOT always repo root) | Generate, Deploy build context |
| Entry point | the real run target — `main.py`, `app.js`, `cmd/<svc>/main.go`, `*.csproj` — confirm the file exists | Dockerfile `CMD`/`ENTRYPOINT` |
| Existing Dockerfile | search the build context; record its path or "none — generate" | Generate (reuse vs. create) |
| Port | code (`app.listen(3000)`, `EXPOSE`, framework default) | Service, probes |
Use `codebase`/`search` to confirm each path actually exists — do not infer it from the language alone. Surface this map to the user and let them correct it before proceeding.
## Build environment
Prefer **`az acr build`** for container images. It builds on ACR's remote task builders, avoids depending on a local Docker daemon, and uses the same build-and-push path in every environment.
`az acr build` needs the Phase 2 ACR to exist and the caller to hold the required ACR build and push permissions. Keep `.dockerignore` tight because the whole build context uploads on every build.
## What to collect
- App name
- Language / framework (detect from manifest files, confirm via `vscode_askQuestions`)
- Per-service structure map (build context, entry point, existing Dockerfile path) — see above
- Dependencies (databases, caches, queues — offer common options as multi-select)
- Port (detect from code like `app.listen(3000)`, confirm)
- Environment variables (detect from `.env.example` or code)
- Existing CI/CD (search workspace)
## Rules
- Use `vscode_askQuestions` for every question with concrete options. Mark detected/recommended values with `recommended: true`.
- One question at a time unless tightly related.
- When the answer is open-ended (app name), use `allowFreeformInput: true`.
## Exit Criteria
You know the app name, language, framework, port, key deps, env vars, CI status, a confirmed per-service structure map (build context + entry point + existing Dockerfile path) for every deployable service. Announce: "Discovery complete — moving to Configure Infrastructure."
View on GitHub