upex-galaxy/agentic-qa-boilerplate/.agents/skills/project-discovery/SKILL.md
project-discovery
Onboard a project through four discovery phases: Constitution, Architecture, Infrastructure, and Specification. Produces PRD, SRS, domain glossary, infrastructure context, and backlog access, then hands business maps and the master test plan to `project-context`. Use for set up this project, onboard this repo, connect to project, discover architecture, or create PRD/SRS. Do NOT use for incremental context refresh (`project-context`), writing tests, TMS documentation, running suites, adapting KAT
- Source repository stars
- 20
- Declared platforms
- 3
- Static risk flags
- 2
- Last source update
- 2026-08-24
- Source checked
- 2026-08-25
Decision brief
What it does: where it fits
Turn an unknown codebase into a testable project. Four phases, always in order, gated on completion of the previous one. The output is a set of context files the rest of the skills (shift-left-testing, sprint-testing, test-automation, test-documentation, regression-testing) rely…
Not for
- Do NOT use for incremental context refresh (`project-context`), writing tests, TMS documentation, running suites, adapting KAT
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Declared | Source record | Install path and trigger |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/upex-galaxy/agentic-qa-boilerplate --skill ".agents/skills/project-discovery"Inspect the Agent Skill "project-discovery" from https://github.com/upex-galaxy/agentic-qa-boilerplate/blob/b71a4a624498a6bb99201f72b6ae6342b4542e8b/.agents/skills/project-discovery/SKILL.md at commit b71a4a624498a6bb99201f72b6ae6342b4542e8b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Phase 0 — Session resume check (MANDATORY, inline)
Before scope selection or any target-repo discovery, run the resume contract from agentic-qa-core/references/session-management.md §4:
Check .session/project-discovery/progress.md.If it does NOT exist → proceed to "Before starting: target repo location" below, then "Pick the scope first" (which writes plan.md).If it DOES exist: - 02
Workflow — the 4-phase pipeline
KATA adaptation is a separate skill: adapt-framework. It runs after discovery and context outputs exist.
Project Connection -- repo paths, tech stack detection, environment URLs, credentials from .env, team contacts.Project Assessment -- current testing maturity (frameworks in place, CI presence, lint/typecheck, coverage). Produces a risk profile.Business Model Discovery -- problem statement, target users, value proposition, revenue model (if any). Business Model Canvas recommended. - 03
Phase 1 — Constitution (who, what, why)
Goal: make the project legible. Outputs are read by every future session.
Project Connection -- repo paths, tech stack detection, environment URLs, credentials from .env, team contacts.Project Assessment -- current testing maturity (frameworks in place, CI presence, lint/typecheck, coverage). Produces a risk profile.Business Model Discovery -- problem statement, target users, value proposition, revenue model (if any). Business Model Canvas recommended. - 04
Phase 2 — Architecture (PRD + SRS)
Goal: produce the Product and Software Requirements docs from code (not the other way round -- that is the "creation" direction, this is the "discovery" direction).
Executive Summary -- problem, solution, success metrics, scope.User Personas -- roles, permissions, primary/secondary users, role hierarchy.User Journeys -- critical paths through the UI, route map, journey diagrams. - 05
Phase 3 — Infrastructure
Goal: make the project runnable and deployable for the test environment.
Backend Discovery -- language, framework, database, ORM, auth, dependency manager, run/test commands, migrations, env vars.Frontend Discovery -- framework, bundler, routing, state management, design system, component library, test IDs strategy.Infrastructure Mapping -- CI/CD providers, deployment targets, environments (dev/staging/prod), infra-as-code, monitoring, rollback procedure.
Permission review
Static risk signals and limitations
Reads files
The documentation asks the agent to read local files, directories, or repositories.
**Target project repo** — path resolved at session start (see "Before starting: target repo location" below). Read code and any in-repo PRD. This is the primary source of truth — discovery is reverse-engineering, never aspirational design.Reads files
The documentation asks the agent to read local files, directories, or repositories.
Read `plan.md` (chosen scope, target repo path, phase plan).Runs scripts
The documentation asks the agent to run terminal commands or scripts.
# bun run api:sync # exact API types from OpenAPIEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 20 | Source | Repository attention, not individual Skill quality |
| Compatibility | 3 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- upex-galaxy/agentic-qa-boilerplate
- Skill path
- .agents/skills/project-discovery/SKILL.md
- Commit
- b71a4a624498a6bb99201f72b6ae6342b4542e8b
- License
- MIT
- Collected
- 2026-08-25
- Default branch
- main
View the original SKILL.md
Project Discovery — Onboarding Orchestrator
Turn an unknown codebase into a testable project. Four phases, always in order, gated on completion of the previous one. The output is a set of context files the rest of the skills (shift-left-testing, sprint-testing, test-automation, test-documentation, regression-testing) rely on.
The discovery is conversational: you read the code, ask when ambiguous, confirm before writing files. Never fabricate -- if you cannot verify a claim from the source, mark it as a "Discovery Gap" and move on.
Grounding methodology: IQL (Integrated Quality Lifecycle) — QA is continuous from requirement to release, not a gate at the end. The full rationale and step breakdown live in docs/methodology/IQL-methodology.md (shared across all QA skills). This skill does not depend on reading it — only point the user there if they ask why the discovery is structured this way.
Inputs
Canonical reading order when starting cold on a discovery run. Read in order; stop earlier when the scope is small enough that later inputs add no signal.
- Target project repo — path resolved at session start (see "Before starting: target repo location" below). Read code and any in-repo PRD. This is the primary source of truth — discovery is reverse-engineering, never aspirational design.
- Target repo's
README.mdand existing onboarding docs — fastest path to project intent, stack signals, and run commands before deep code reads. .context/directory (if partial state exists from a prior discovery run) — informs Phase 0 resume decisions and prevents redundant work. Diff against current code before overwriting..agents/project.yamland.env.example— variable resolution patterns ({{PROJECT_KEY}}, env URLs, MCP names) that every downstream context file references.kata-manifest.json— registry of existing KATA Components + ATCs. Anchors what test surface the boilerplate already expects so discovery records gaps coherently..agents/skills/agentic-qa-core/references/skill-composition-strategy.md— workflow context for downstream handoffs (project-context,adapt-framework,sprint-testing,test-documentation).- Business / domain docs supplied by the user (Confluence, Notion exports, internal wikis) — secondary source for business model and glossary when in-repo signal is thin.
Subagent Dispatch Strategy
Orchestration & Session contracts: this skill follows
agentic-qa-core/references/orchestration-doctrine.md(mandatory subagent dispatch — main thread is command center) ANDagentic-qa-core/references/session-management.md(Phase 0 resume check, plan-first persistence at.session/<skill-slug>/<scope>/, archive on completion). Phase 0 (resume check) and Phase 1 (plan write) are NOT optional.
This skill is project-scope: no <scope> segment. Session state lives directly at .session/project-discovery/{plan.md, progress.md} per agentic-qa-core/references/session-management.md §3 + §9. This is the longest skill in the QA repo (1.5–4 hours, 4 hard-gate phases) and benefits most from per-phase checkpoints: if interrupted between Phase 2 (PRD/SRS) and Phase 3 (Infrastructure), resume reads progress.md and skips back to the first incomplete phase without re-prompting the user for already-confirmed scope.
This skill is compliant with the doctrine in AGENTS.md §"Orchestration Mode (Subagent Strategy)" and the session contract in .agents/skills/agentic-qa-core/references/session-management.md. Per-phase dispatch decisions live in Pick the scope first below: Fresh = heavy subagent delegation per phase; Boilerplate adoption = medium; Brownfield + Context refresh = main session only.
Phase 0 — Session resume check (MANDATORY, inline)
Before scope selection or any target-repo discovery, run the resume contract from agentic-qa-core/references/session-management.md §4:
- Check
.session/project-discovery/progress.md. - If it does NOT exist → proceed to "Before starting: target repo location" below, then "Pick the scope first" (which writes
plan.md). - If it DOES exist:
- Read
plan.md(chosen scope, target repo path, phase plan). - Read tail of
progress.md(last completed phase + next planned phase). - Surface to the user: scope chosen, target repo, last completed phase, next phase, any open Discovery Gaps from the last entry.
- Offer resume / restart / abort. On
restart, archive to.session/.archive/<YYYY-MM-DD>-project-discovery-aborted/before proceeding.
- Read
Resume is high-value here: Fresh onboarding (1.5–4h) crossing a session boundary without resume re-runs Phase 1 from scratch, re-prompting target paths the user already confirmed.
Before starting: target repo location
/project-discovery runs read-only against a project under test — the target repo — that is NOT this boilerplate. Before Phase 1 starts, lock down where the target lives. Block Phase 1 if the target path is ambiguous.
| Layout | What to declare | How to detect |
|---|---|---|
| Monorepo (single repo contains FE + BE) | Absolute or relative path from this repo | Check the candidate path for pnpm-workspace.yaml, turbo.json, nx.json, lerna.json, or a top-level package.json with no deps of its own |
| Split sibling repos (FE and BE cloned separately) | One path per repo (or a common parent dir) | Look at ../-level siblings with plausible names (*-backend, *-frontend, *-api, *-web); confirm with the user |
| Remote (not cloned yet) | Repo URL + branch, then ask the user to clone locally before Phase 1 | gh repo view only returns metadata; real discovery needs local file access — do not try to discover from a URL |
Record the resolved path(s) in .context/project-config.md §Repositories during Phase 1 sub-step 1 (Project Connection). Every <target-repo> reference in later phases resolves to the path declared here.
If the layout is "split sibling repos", run Phase 1 sub-steps once per repo and merge findings into a single project-config.md; do not interleave.
Pick the scope first
All projects go through the same 4 phases, but depth varies. Pick once, then follow the common pipeline.
| Scenario | Input | Phases to run | Typical depth | Context weight & subagent hint |
|---|---|---|---|---|
| Fresh onboarding (greenfield or unseen project) | Repo URL or local path(s), no existing context files | 1 -> 2 -> 3 -> 4, then project-context refresh-all | Full discovery. Business maps and test strategy are generated by their dedicated skill. After context completion, run adapt-framework. | Heavy. Delegate each phase's code survey to a dedicated subagent. |
| Boilerplate adoption (this repo adopted for a new project) | Target app repo(s), this repo as the test framework | 1 (project-connection) -> 3, then project-context for missing maps | Skip Phase 2 or 4 only when their required artifacts already exist. Verify files on disk before adapt-framework. | Medium. Delegate Phase 1 and Phase 3 per package for monorepos. |
| Brownfield (project already documented, tests missing) | Existing .context/ partially filled | 2 (gaps) -> 3 (gaps) -> 4 (gaps), then project-context for stale maps | Fill discovery gaps here; refresh map artifacts in their owning skill. | Light. Main session unless gaps span many files. |
| Context refresh | User asks to regenerate a business map or master test plan | Redirect to the matching project-context mode | This skill does not refresh those artifacts. For PBI access changes, re-run Phase 4. For exact OpenAPI types, use bun run api:sync. | Minimal. Handoff only. |
Default to "Fresh onboarding" when in doubt. Confirm the scope with the user before starting Phase 1.
After scope confirmation, write .session/project-discovery/plan.md per agentic-qa-core/references/session-management.md §6. The phase breakdown ends at Phase 4; record project-context refresh-all as the post-discovery handoff, not as a discovery phase.
Workflow — the 4-phase pipeline
Phase 1: Constitution -> Phase 2: Architecture -> Phase 3: Infrastructure -> Phase 4: Specification
(who/what/why) (PRD + SRS) (backend/frontend/infra) (PBI mapping)
| | | |
.context/business/ .context/PRD/*.md .context/infrastructure/*.md .context/PBI/ACCESS.md
business-model.md .context/SRS/*.md
domain-glossary.md
project-config.md
|
v
project-context (separate skill)
data -> features -> api -> test-plan
`bun run api:sync` remains the technical
OpenAPI type pipeline.
KATA adaptation is a separate skill:
adapt-framework. It runs after discovery and context outputs exist.
Each phase has a completion gate: before moving on, the required output files must exist on disk with non-placeholder content. Ask the user to confirm after each phase; never auto-chain.
Phase 1 — Constitution (who, what, why)
Goal: make the project legible. Outputs are read by every future session.
Four sub-steps, in order:
- Project Connection -- repo paths, tech stack detection, environment URLs, credentials from
.env, team contacts. - Project Assessment -- current testing maturity (frameworks in place, CI presence, lint/typecheck, coverage). Produces a risk profile.
- Business Model Discovery -- problem statement, target users, value proposition, revenue model (if any). Business Model Canvas recommended.
- Domain Glossary -- core entities, relationships, state machines, enumerations, UI-label vs code-identifier mapping.
Completion gate: .context/business/business-model.md, .context/business/domain-glossary.md, .context/project-config.md all exist and are non-empty. Plus a ## Project Assessment (Phase 1) block in canonical AGENTS.md. Sanity-check content — these are soft gates, surfaced to the human as warnings, not hard aborts:
domain-glossary.mdcontains at least 5 core-entity subsections (grep^###yields 5+ matches, ignoring top-level H3s from "Enumerations" etc. — aim for real entities).business-model.mdcites at least one concrete source (Source:orFound in:literal appears 3+ times).project-config.mdhas a## Tech Stacksection AND a## Environmentssection.
After the automated sanity check, show the human the output paths and wait for explicit "Phase 1 complete, continue" before moving on.
Read references/phase-1-constitution.md when running any Phase 1 sub-step. Contains the discovery process, stack-detection commands, required output sections, and quality checklists.
Phase 2 — Architecture (PRD + SRS)
Goal: produce the Product and Software Requirements docs from code (not the other way round -- that is the "creation" direction, this is the "discovery" direction).
PRD sub-steps (run first, in parallel or sequentially — user choice):
- Executive Summary -- problem, solution, success metrics, scope.
- User Personas -- roles, permissions, primary/secondary users, role hierarchy.
- User Journeys -- critical paths through the UI, route map, journey diagrams.
Feature catalog is post-discovery.
project-contextmodefeaturesowns.context/business/business-feature-map.md. Do not generate it here.
SRS sub-steps (run after PRD, serially):
- Architecture Specs -- C4 context and container diagrams, component structure, database schema, external services, security model.
- Functional Specs -- FR-N entries with preconditions, business rules, validations, state machines.
- Non-Functional Specs -- performance budgets, security posture, reliability (RTO/RPO), scalability, observability, compliance.
API contracts are NOT an SRS output. The technical surface is owned by
bun run api:sync; the business angle is owned byproject-contextmodeapi. Phase 2 records only the spec location or a Discovery Gap.
Test-architecture ADR seeding (Phase 2 SRS + Phase 3). When the Architecture Specs / Infrastructure sub-steps settle a hard-to-reverse test-architecture decision — test runner/framework, isolation & parallelization model, fixture/test-data strategy, auth-in-tests, selector/
data-testidcontract, exploratory-vs-scripted boundary, CI sharding — promote each one that passes the two-gate test (architectural AND hard to reverse) to a standaloneADR-NNNN-<slug>.mdin.context/ADR/, and reference it fromarchitecture.md/infrastructure/. Greenfield: you are ENCODING the decision; brownfield: you are RECORDING the one you discovered. Followagentic-qa-core/references/adr-doctrine.md(detection + authoring) and.context/ADR/README.md(template + lifecycle). AI draftsProposed; the human accepts.
Completion gate: .context/PRD/executive-summary.md, user-personas.md, user-journeys.md, .context/SRS/architecture.md, functional-specs.md, non-functional-specs.md all exist. API contract source is recorded in .context/project-config.md. business-feature-map.md remains a post-discovery project-context output. Soft content checks:
architecture.mdcontains at least one```mermaidblock AND one of (## Data Flow,## Database Schema,## Component Structure).functional-specs.mdcontains at least oneFR-identifier and oneBR-identifier.user-personas.mdlists at least 2 role entries (###or table rows with role names).
Show outputs to the human and wait for "Phase 2 complete, continue" before moving on.
Read references/phase-2-prd.md when working on any PRD doc. Read references/phase-2-srs.md when working on any SRS doc. They are independent -- do not load both unless you are straddling both sides.
Phase 3 — Infrastructure
Goal: make the project runnable and deployable for the test environment.
Three sub-steps:
- Backend Discovery -- language, framework, database, ORM, auth, dependency manager, run/test commands, migrations, env vars.
- Frontend Discovery -- framework, bundler, routing, state management, design system, component library, test IDs strategy.
- Infrastructure Mapping -- CI/CD providers, deployment targets, environments (dev/staging/prod), infra-as-code, monitoring, rollback procedure.
Completion gate: .context/infrastructure/backend.md, frontend.md, infrastructure.md all exist with the key facts (auth flow, test commands, deploy URLs) filled in. Soft content checks:
backend.mdANDfrontend.mdeach contain a## Runtime(or## Build Configuration) section AND a commands block (bashfenced) covering install + run.infrastructure.mdlists environments explicitly (| Staging |or| Production |table row).- At least one auth-flow pointer exists in
backend.md(e.g., mentions/auth/login,session,JWT,cookie,OAuth).
Show outputs to the human and wait for "Phase 3 complete, continue" before moving on.
Read references/phase-3-infrastructure.md when running any Phase 3 sub-step. Contains framework-detection heuristics, required sections per artifact, and common gotchas (SSR vs CSR, edge vs serverless, monorepo vs split repos).
Phase 4 — Specification (Backlog mapping)
Goal: hook the testing framework into the team's issue tracker without duplicating content.
One sub-step:
- PBI Backlog Mapping -- connect to
{{ISSUE_TRACKER}}via[ISSUE_TRACKER_TOOL], discover project key, map hierarchy (Epic/Story/Task/Bug), record queries used to fetch tickets. Output:.context/PBI/ACCESS.md(backlog access recipe). NEVER write.context/PBI/README.md— it is a committed framework document (tier doctrine + gitignore ladder), not a discovery output; same for the committedtemplates/skeletons.
Per-ticket PBI is NOT generated by this skill. It is materialized later by
/sprint-testingviabun run jira:sync-issues get <KEY> --include-comments, which writes the canonical synced tree.context/PBI/epics/EPIC-<KEY>-<slug>/stories/STORY-<KEY>-<slug>/(Module = Epic, 1:1). Those local.mdfiles are a READ-ONLY cache of Jira (Jira = source of truth). This skill does NOT create per-ticketstory.md— it only sets up the backlog access recipe (ACCESS.md).
Completion gate: .context/PBI/ACCESS.md exists with project key + auth recipe. Soft content checks:
PBI/ACCESS.mdcontains the configured{{PROJECT_KEY}}literal AND a## Common Queriessection (or JQL / WIQL snippet)..context/PBI/README.mdand.context/PBI/templates/untouched (framework-owned, committed).
Show outputs to the human and wait for "Phase 4 complete" before emitting the project-context handoff.
Read references/phase-4-specification.md when running Phase 4. Contains issue-tracker connection recipes, query conventions, and the ACCESS.md structure.
Business-context handoff
Business maps and the master test plan are not generated here. After Phase 4, open a clean session and invoke project-context mode refresh-all. It owns the deterministic sequence data -> features -> api -> test-plan, including every CREATE/UPDATE approval gate. Exact OpenAPI types remain owned by bun run api:sync.
After those outputs exist, invoke adapt-framework to wire this boilerplate to the target stack.
Per-phase progress + Archive
After each phase passes its completion gate AND the user confirms "Phase N complete", append a phase entry to .session/project-discovery/progress.md. Entries end at Phase 4; the next action is the separate project-context skill.
After Phase 4 passes, archive the project-discovery session per agentic-qa-core/references/session-management.md §8 and record the project-context refresh-all handoff. Context generation has its own lifecycle and does not keep this session open.
On Phase-gate REJECT (user marks a phase incomplete or finds a Discovery Gap that blocks), archive does NOT run. The working directory stays so resume picks up at the failing gate.
Next recommended steps (emit after Phase 4 completes)
Discovery populates PRD, SRS, glossary, infrastructure, and backlog access. It does not invoke project-context, which is token-heavy and best run in a clean session.
When Phase 4 is confirmed complete, print this block to the user verbatim:
Discovery complete. `/project-discovery` has populated:
- .context/business/business-model.md, domain-glossary.md
- .context/project-config.md
- .context/PRD/executive-summary.md, user-personas.md, user-journeys.md
- .context/SRS/architecture.md, functional-specs.md, non-functional-specs.md
- .context/infrastructure/backend.md, frontend.md, infrastructure.md
- .context/PBI/ACCESS.md
**Recommended next skill** (run in a clean session):
`project-context` mode `refresh-all`
It runs data -> features -> api -> test-plan in dependency order and can be re-run whenever project context becomes stale.
After it completes, invoke `adapt-framework` to wire KATA against the target stack.
Do not auto-chain the handoff inside this session. Context generation needs its own token budget and approval lifecycle.
Pre-adapt-framework checklist
Before the user invokes adapt-framework, verify every file below is on disk. Missing business maps route to the matching project-context mode.
-
.context/PRD/populated (at leastREADME.md) AND.context/business/business-model.mdordomain-glossary.mdpresent -
.context/SRS/architecture.md -
.context/infrastructure/backend.mdand.context/infrastructure/frontend.md -
.context/business/business-data-map.md - API contract source: one of
api/openapi-types.ts(non-stub) OR reachable OpenAPI spec URL OR.context/business/business-api-map.md(business-angle fallback) -
.env.example(and.enveither present or created duringadapt-framework)
Handoff line to print to the user:
Discovery handoff complete. Run
project-context refresh-all, then invokeadapt-frameworkwhen the six prerequisites are present.
Stack-specific discovery rules
Base stack detection (package.json → Node, pyproject.toml → Python, go.mod → Go, next.config.* → Next.js, etc.) is a baseline skill any AI has. This section only lists actions the skill should take based on what is detected — rules that are not obvious from general programming knowledge.
| Signal | Action for discovery |
|---|---|
Monorepo (pnpm-workspace.yaml, turbo.json, nx.json, lerna.json, or top-level package.json with no deps of its own) | Split backend/frontend per package. Run Phase 1 once (project-level), Phase 2-3 per package. Merge outputs under .context/infrastructure/ with sub-sections per package. |
| Multiple coexisting signals in one repo (e.g., Next.js + Express) | Almost always a monorepo — treat frontend and backend as separate discoveries even if workspace config is missing. Do NOT produce a merged SRS. |
Dockerfile + docker-compose.yml present | Read compose for service inventory before scanning source — it is the authoritative runtime topology. Use source only to fill gaps. |
| No test framework deps detected | Greenfield test story. Phase 3 documents the absence as a Discovery Gap. Do NOT install tooling in the target repo. adapt-framework wires this boilerplate's own test stack; it never modifies the target. |
.github/workflows/*.yml present | Extract the test job from CI for Phase 3 Infrastructure — usually the cleanest source for "how CI runs tests". |
| API handlers found but no OpenAPI spec | Flag as Discovery Gap in Phase 2 SRS. Do NOT hand-write an OpenAPI inside project-discovery; ask for a spec or defer the business angle to project-context mode api. |
| Hardcoded secrets detected (grep hits in source) | HIGH risk. Record path in .context/risk-assessment.md §Phase 1 Project Assessment. Do NOT paste the secret into any discovery doc — reference path only. |
Gotchas
- Discovery is read-only on the target repo.
.context/is the only write target. For modifications to this boilerplate, useadapt-framework. - Hard-to-reverse test decisions become ADRs, not buried prose. When Phase 2/3 settles a test-runner, isolation, fixture/data, auth-in-tests, or selector-contract decision that is architectural AND hard to reverse, record it as
.context/ADR/ADR-NNNN-<slug>.md(append-only) instead of leaving it only insidearchitecture.md. DraftProposed; the human approves. Seeagentic-qa-core/references/adr-doctrine.md. - Credentials never live in discovery docs. Read them from
.env(LOCAL_USER_EMAIL,STAGING_USER_EMAIL, etc.). If missing, ask the user to create.env.exampleor hand over secrets out-of-band -- do not paste them into markdown. - "Discovery Gaps" section is mandatory in every output. If you could not verify something from the code (e.g., traffic volume, uptime targets), list it in a
## Discovery Gapssection rather than inventing a number. This signals to future sessions what still needs human input. - PRD/SRS discovered from code is authoritative, not aspirational. Describe what the system does, not what product wants it to do. If the user wants a "to-be" doc, that is PRD/SRS creation (out of scope for this skill); point them to their own product workflow.
- Do not duplicate the backlog. Jira/Linear/GitHub Issues is the source of truth for tickets.
.context/PBI/holds the backlog access recipe (README.md) and format-reference guides (templates/), never a copy of the full backlog. Per-ticket PBI is synced on demand from Jira by/sprint-testing(bun run jira:sync-issues) as a read-only cache — this skill does not create it. - Monorepos require scoped discovery. Run Phase 1 once (project as a whole) but Phases 2-3 per package. Merge findings into a single
.context/infrastructure/with sub-sections per package. - Database schemas over ORM models. If both exist, prefer the migration files / schema dump over the ORM definitions -- ORM definitions can drift from the live schema.
- API base URL vs route prefix.
{{environments.local.api_url}}includes the protocol+host; route prefixes (e.g.,/api/v1) belong in the path. Do not concatenate them twice in any context file that documents endpoints (e.g.,business-api-map.md). - Auth flow is the single most important input for downstream
adapt-framework. Capture the real login request inbackend.mdso adaptation has a concrete contract. - Never refresh maps here. Route existing-map refreshes to
project-context, which owns diff and overwrite approval. - Context modes need grounded discovery. If the user requests a business map on a fresh repo, complete at least Phase 1 and Phase 3 before handing off.
- IQL framing is optional. Mention it only if the user asks "why this structure?" -- do not lecture them on methodology when they just want a working
business-data-map.md. - API requests get redirected. Use
bun run api:syncfor technical types andproject-contextmodeapifor the business angle.
Templates (inline -- small, load-bearing)
Discovery Gaps section (every output)
## Discovery Gaps
The following items could not be verified from code and require human confirmation:
- [ ] <Gap>: <what is missing, where you looked, suggested source of truth>
- [ ] ...
Phase completion ping (used after each phase)
Phase N complete.
Generated files:
- <path1>
- <path2>
Next: Phase N+1 (<phase name>). Confirm to continue, or say "pause" to stop here.
.env key list emitted after Phase 1
# Application URLs (per-environment — match the env names you declared
# under `environments:` in `.agents/project.yaml`; consumed by
# `bun run agents:setup --non-interactive` via the `<KEY>_<ENV>` pattern)
WEB_URL_LOCAL=
WEB_URL_STAGING=
API_URL_LOCAL=
API_URL_STAGING=
# Test User Credentials
LOCAL_USER_EMAIL=
LOCAL_USER_PASSWORD=
STAGING_USER_EMAIL=
STAGING_USER_PASSWORD=
# Atlassian / TMS credentials (used by MCP, acli, xray-cli, sync scripts, and
# the Jira-Direct TMS provider — no overrides)
# NOTE: the Atlassian site HOST is not a .env variable. It lives in
# .agents/project.yaml -> issue_tracker.atlassian_url (`bun run agents:setup`).
ATLASSIAN_EMAIL=
ATLASSIAN_API_TOKEN=
Larger templates (full PRD sections, KATA component skeletons, .context/infrastructure/backend.md layout, business-data-map.md structure) live in the references.
Specific tasks -- which reference to read
- Phase 1 (project connection, assessment, business model, glossary) -> read
references/phase-1-constitution.md. - Phase 2 PRD (executive summary, personas, journeys, features) -> read
references/phase-2-prd.md. - Phase 2 SRS (architecture, API contracts, functional, non-functional) -> read
references/phase-2-srs.md. - Phase 3 (backend, frontend, infrastructure) -> read
references/phase-3-infrastructure.md. - Recording a hard-to-reverse test-architecture decision (ADR) -> read
agentic-qa-core/references/adr-doctrine.md+.context/ADR/README.md. - Phase 4 (backlog mapping, templates) -> read
references/phase-4-specification.md. - Generating or refreshing business maps and master test plan -> NOT this skill. Invoke the matching
project-contextmode. - API endpoint sync ->
bun run api:syncfor technical types;project-contextmodeapifor business narrative. - User asks about IQL methodology -> point them to
docs/methodology/IQL-methodology.md(shared across QA skills). This skill no longer carries its own IQL reference. - Code exploration (grep, read files) -> use built-in tools. If the user wants a browser-driven exploration instead (UI-first discovery), load
/playwright-cliskill. - Issue-tracker operations (Phase 4) -> resolve
[ISSUE_TRACKER_TOOL]via AGENTS.md Tool Resolution. For Jira, load/acliskill (primary) or fall back to the Atlassian MCP. If the project also uses Xray for TMS, load/xray-cliadditionally. - Database inspection -> resolve
[DB_TOOL]; read-only queries only during discovery. - Session contract (Phase 0 resume, plan.md/progress.md schemas, archive policy, Engram per-phase checkpoint) -> read
../agentic-qa-core/references/session-management.md. This skill is a producer ofsession/project-discovery/...topic keys.
Anti-patterns — NEVER do these
- P1. NEVER invent business entities, flows, or requirements not present in the target repo code or PRD. Discovery is reverse-engineering, not aspirational design — unverified items go in a
## Discovery Gapsblock, never inline. - P2. NEVER skip Phase 1 (Constitution) when starting fresh. Downstream phases (PRD/SRS, infrastructure, PBI mapping) assume the project values and stack are fixed first; skipping leaves later artifacts ungrounded.
- P3. NEVER fill
.context/business/business-data-map.mdfrom this skill.project-contextre-reads evidence and owns the artifact. - P4. NEVER mix
project-discoverywithadapt-frameworkin the same session. Their write boundaries differ. - P5. NEVER use
project-discoveryfor incremental map updates. Useproject-context. - P6. NEVER skip the domain glossary in Phase 1. Downstream skills read it as a precondition when present:
sprint-testinglists it in its Stage 1 planning inputs (ATP, refined ACs, TC outlines) andtest-documentationuses it as the vocabulary reference for TC naming and bodies. - P7. NEVER fabricate Jira / Xray field IDs or status names in
.context/master-test-plan.mdor any PBI template. Runbun run jira:sync-fields --forceand reference{{jira.<slug>}}via the slug catalog in.agents/jira-required.yaml.
Quick reference
# Phase 1 — Project Connection (detection commands)
ls -la <target-repo> # repo root
cat <target-repo>/package.json | jq . # JS/TS stack
cat <target-repo>/pyproject.toml # Python stack
ls <target-repo>/.github/workflows # CI presence
find <target-repo> -maxdepth 2 -name "docker-compose*.yml" -o -name "Dockerfile"
# Phase 2 — PRD/SRS source-of-truth order
# 1. Read routes (frontend app/ or pages/ or router.ts)
# 2. Read API handlers (src/controllers/ or src/routes/ or src/api/)
# 3. Read DB schema (prisma/schema.prisma, migrations/, schema.sql)
# 4. Read auth config (middleware.ts, auth.config.ts, passport config)
# Phase 3 — Infrastructure
cat <target-repo>/.env.example # env var contract
grep -r "process.env\." <target-repo>/src # env vars actually read
cat <target-repo>/.github/workflows/*.yml # CI/CD pipeline
# Post-discovery context handoff (separate skill):
# project-context refresh-all # data -> features -> api -> test-plan
# bun run api:sync # exact API types from OpenAPI
# Issue tracker (Phase 4) — example placeholder
# Prerequisite: Load /acli skill before executing the commands below.
[ISSUE_TRACKER_TOOL] Get Issue:
key: {{PROJECT_KEY}}-1
[ISSUE_TRACKER_TOOL] Search Issues:
project: {{PROJECT_KEY}}
query: sprint in openSprints() AND assignee = currentUser()
Frequently asked questions
What to verify before installation and use
What does the project-discovery source document cover?
Turn an unknown codebase into a testable project. Four phases, always in order, gated on completion of the previous one. The output is a set of context files the rest of the skills (shift-left-testing, sprint-testing, test-automation, test-documentation, regression-testing) rely…
How do I install project-discovery?
The source record exposes this install command: npx skills add https://github.com/upex-galaxy/agentic-qa-boilerplate --skill ".agents/skills/project-discovery". Inspect the command and pinned source before running it.
Which Agent platforms does the source record declare?
The pinned source record declares support for: codex, claude code, cursor.
Which permission-related actions were detected?
Static rules flagged read-files, exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
aomi-labs/skills
aomi-build
Scaffold new Aomi apps and plugins from API docs, OpenAPI/Swagger specs, or SDK references. aomi-build generates production-ready Rust SDK crates (lib.rs, client.rs, tool.rs) with tool schemas, preambles, host-interop flows, and validation — turning a vendor's API surface into AI-agent-callable tools. It covers the current `aomi-build` OpenAPI pipeline (`gen-specs` → `gen-client` → `gen-tool` → curate → compile/test) as well as greenfield apps. Use when the user wants to scaffold a new Aomi app
PramodDutta/qaskills
API Test Suite Generator
Automatically generate comprehensive API test suites from OpenAPI specifications covering CRUD operations, error handling, authentication, pagination, and edge cases
upex-galaxy/agentic-qa-boilerplate
test-automation
Plan, write, and review automated tests following KATA (Komponent Action Test Architecture) on Playwright + TypeScript, or explain existing automated tests in a sealed read-only mode. Use when writing E2E or API/integration tests, creating Page or Api components, designing ATCs, parameterizing test data, registering fixtures, reviewing test code for KATA compliance, or requesting break-down-tests / a plain-English test breakdown. The explain mode reads source and reports assertions without enter
upex-galaxy/agentic-qa-boilerplate
test-documentation
Analyze, prioritize, and document test cases in TMS (Jira/Xray), or repair an existing Story-ATS-ATP-ATR-TC cascade through a sealed explicit mode. Use for Test/ATP/ATR artifacts, ROI and automation verdicts, maintaining traceability, fix-traceability, or broken TMS links. The repair-traceability mode audits, plans, waits for explicit approval, applies, and verifies without launching the general documentation workflow. Do NOT use for writing test code (test-automation) or running suites (regress