ワンクリックで
application-components
Identify and document application components (compute, data, networking) through codebase scanning and conversation
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Identify and document application components (compute, data, networking) through codebase scanning and conversation
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate Azure infrastructure as Bicep code from planning data
Generate Azure infrastructure as Terraform code from planning data
Generate a Mermaid architecture diagram derived from application components and infrastructure context data
Configure an individual application component by mapping it to an Azure service with SKU, region, and service-specific settings
Document source control, CI/CD platform, environments, deployment process, and quality gates for the application
Read all planning data, propose relevant ADR topics, and generate Architecture Decision Records following the project template
| name | application-components |
| description | Identify and document application components (compute, data, networking) through codebase scanning and conversation |
This skill identifies and documents the components that make up the application for the Az Infra Harness. It generates infra/application-definition/application-components.md which is used to drive the architecture planning phase — each component will later be mapped to Azure services.
The generated file will be displayed in the UI when the user runs npx @zureltd/az-infra-harness and navigates to the Application Definition section.
Run this skill when:
/non-functional-requirements to complete the application definition/application-componentsComponents must be classified into exactly one of three types:
| Type | Examples |
|---|---|
Compute | Web servers, APIs, containers, serverless functions, background workers, scheduled jobs |
Data | Databases (SQL, NoSQL), caches (Redis), blob/file storage, message queues, event streams |
Networking | Load balancers, application gateways, VNets, private endpoints, CDN, DNS, firewalls |
You MUST interact with the user and wait for their responses before writing the output file. Never generate the file silently based on what you read from the filesystem or codebase alone.
There are two modes depending on whether a file already exists:
Check whether infra/application-definition/application-components.md already exists and has content.
If the file exists and has content → follow the "Update Mode" workflow (Step 2a).
If the file does not exist or is empty → follow the "Fresh Mode" workflow (Step 2b).
Read the existing file and present the current component list to the user.
I found your existing application components. Here's what's currently documented:
1. **[Component Name]** (Compute) — [current description]
2. **[Component Name]** (Data) — [current description]
3. **[Component Name]** (Networking) — [current description]
...
What would you like to change? You can:
- Add a new component
- Remove a component
- Rename or reclassify a component
- Update a description
- Say "looks good" to confirm everything is correct
Wait for the user's response, then make the requested changes conversationally. After each round of changes, ask: "Anything else to update, or shall I save?" before proceeding to Step 4.
Actively scan the codebase to build a draft component list. The goal is to present a starting point to the user — not to skip the conversation.
Scan targets and what to look for:
docker-compose.yml / docker-compose*.yml — each service is likely a componentkubernetes/, k8s/, helm/ — each Deployment/StatefulSet/Service is a componentazure-pipelines.yml, .github/workflows/ — may list deployment targetsbicep/, terraform/, infrastructure/ — directly describe infrastructure componentsDockerfile files — each one signals a compute component.sln, multiple package.json, pom.xml submodules) — each project may be a componentsrc/ subdirectories with distinct names (e.g., src/api/, src/web/, src/worker/) — likely separate componentsREADME.md — architecture sections, component diagrams described in textdocs/ — architecture documentsinfra/application-definition/application-overview.md — already-captured application contextIf the Azure CLI (az) is available and the user is logged in, scan for existing Azure resources that may represent components:
# Check if logged in
az account show --query "{subscription:name}" -o tsv 2>/dev/null
# Discover existing compute resources
az webapp list --query "[].{name:name, kind:kind, rg:resourceGroup}" -o json 2>/dev/null
az containerapp list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
az functionapp list --query "[].{name:name, kind:kind, rg:resourceGroup}" -o json 2>/dev/null
az aks list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
# Discover existing data resources
az sql server list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
az cosmosdb list --query "[].{name:name, rg:resourceGroup, kind:kind}" -o json 2>/dev/null
az redis list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
az storage account list --query "[].{name:name, rg:resourceGroup, kind:kind}" -o json 2>/dev/null
# Discover existing networking resources
az network application-gateway list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
az network front-door list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
az network lb list --query "[].{name:name, rg:resourceGroup}" -o json 2>/dev/null
If resources are found, include them in your draft component list with a note:
4. **Customer Database** (Data) — "Found existing Azure SQL Server 'sql-contoso-prod' in resource group 'rg-contoso-data'"
If az is not available or not logged in: Skip silently.
How to present findings:
I've scanned your codebase and found the following components:
1. **[Component Name]** (Compute) — [brief reason: e.g., "Dockerfile in /api directory"]
2. **[Component Name]** (Data) — [brief reason: e.g., "PostgreSQL connection string in config"]
3. **[Component Name]** (Networking) — [brief reason: e.g., "nginx.conf found at root"]
Are these accurate? Would you like to add, remove, or rename any components? Are there components I might have missed (e.g., external services, background workers, caches)?
If no components found:
Always stop here and present your findings or current state to the user. Wait for their response before proceeding to Step 4.
This skill MUST comply with the shared Interaction & Validation Standard:
.opencode/skills/_shared/interaction-validation-standard.md
The final component list must be explicitly confirmed and fully validated before proceeding to file generation.
Based on my scan, I found these components:
[List from Step 1]
Before we finalize:
- Are all of these correct?
- Are there any components I missed? (e.g., background workers, caches, external APIs, CDN, storage)
- Would you like to rename or reclassify any of them?
Ask the following questions conversationally:
Question 1: How is the application structured?
How is your application structured? For example:
- Is it a monolith (single deployable unit)?
- A frontend + backend split?
- A set of microservices?
- Something else?
Question 2: List the components
Based on that structure, what are the main components? For each, I'll need:
- A name (e.g., "Web Frontend", "Order API", "Customer Database")
- A type: Compute, Data, or Networking
- A one-sentence description of what it does
You can list them in any format — I'll help structure them.
After receiving the initial list, always ask:
Are there any additional components I should include? Common ones that are sometimes overlooked:
- Caches (e.g., Redis, Memcached)
- Message queues or event buses
- Background workers or scheduled jobs
- CDN or static asset delivery
- API gateway or reverse proxy
- External databases or third-party services that are part of the architecture
For any component that doesn't yet have a confirmed description, ask for one before generating the file. In update mode, this was handled conversationally in Step 2a.
For each component, verify:
Type classification guidance:
Description guidance:
Only proceed here after the user has interacted and confirmed what they want written. In update mode this means they've reviewed the current list and confirmed their changes. In fresh mode this means they've confirmed the draft list and provided descriptions.
Once all components are confirmed, create the markdown file with this exact structure:
# Application Components
## [Component Name]
**Type:** Compute
[One-sentence description of what this component does in the application.]
## [Component Name]
**Type:** Data
[One-sentence description of what this component does in the application.]
## [Component Name]
**Type:** Networking
[One-sentence description of what this component does in the application.]
Important formatting rules:
#) for the file title: exactly # Application Components##) for each component name**Type:** Compute (or Data or Networking) — on its own line immediately after the H2##)Compute, Data, Networking (capitalized, no other values)Minimum components: 2 (a valid application has at least 2 components)
Maximum components: No hard limit, but encourage keeping the list meaningful (not exhaustive)
Before saving, verify the generated content meets all requirements:
Structure validation:
# Application Components**Type:** lineCompute, Data, Networking[Component Name])Content validation:
If validation fails:
Target location: infra/application-definition/application-components.md
Pre-save checks:
infra/application-definition/Save process:
Error handling:
After successful file creation, inform the user:
✅ Created application components successfully!
📄 File location: infra/application-definition/application-components.md
🌐 To view in the UI:
1. Ensure the Az Infra Harness is running: `npx @zureltd/az-infra-harness`
2. Refresh your browser
3. Navigate to the Application Definition section
4. The application components box should now show a blue border with a checkmark
5. The "Continue to Context" button will be enabled once all three boxes are complete
You have now completed the Application Definition section! 🎉
The next step is to run /infrastructure-context to begin defining your infrastructure context.
Please check permissions and try again."
Agent: "I'll help you document the application components. Let me scan your codebase first..."
[Scanning finds docker-compose.yml with web, api, db services; nginx.conf at root]
Agent: "I found the following components in your codebase:
/web directory/api directoryAre these accurate? Are there any I missed — like a cache, message queue, or background worker?"
User: "Yes those are right. We also have a Redis cache."
Agent: "I'd classify Redis as a Data component. Can you give me a one-sentence description of what it caches?"
User: "It caches session data and frequently accessed user preferences."
Agent: "✅ Created application components successfully!"
Agent: "I found your existing application components:
What would you like to change? You can add, remove, rename, reclassify, or update descriptions."
User: "Add a Redis cache for session data."
Agent: "Added. Redis Cache (Data) — Caches session data and user preferences. Anything else, or shall I save?"
User: "That's it."
Agent: "✅ Updated application components successfully!"
infra/application-definition/application-components.md for a complete exampleinfra/application-definition/README.md for format specificationDATA-STRUCTURE.md for overall structureThe skill is successful when:
infra/application-definition/application-components.md