Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when the user asks to "generate architecture view", "show service dependency graph", "map request flows", "show event topology", "group services by domain", "visualize architecture", or mentions cross-repository architecture analysis, service mapping, or architectural visualization.
.claude/skills/aiskillstore-arch-view/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 30% | 0% |
Generate cross-repository architectural views by aggregating catalog-info.yaml metadata from all repositories using parallel subagents.
Create visual architectural representations (Mermaid diagrams, markdown tables) that show how services fit together, how requests flow through gateways, how events propagate, and how services group by domain/team.
Trigger this skill when:
Find all repositories to analyze:
repos/ directory - Local cloned repositoriesgh repo list Astrabit-CPT for full listUse subagents IN PARALLEL to read each repository's catalog-info.yaml:
For each repo:
Launch subagent with: "Read catalog-info.yaml from [repo_path] and return the parsed content"Parallel processing strategy:
Combine all metadata into a unified model:
pythonaggregated = { "components": {}, # name -> catalog info "dependencies": set(), # (from, to) tuples "gateways": [], "services": [], "workers": [], "domains": {}, # domain -> [components] "events": { "producers": {}, # topic -> [producers] "consumers": {}, # topic -> [consumers] }, "routes": [], # gateway routes }
Based on user request, generate the appropriate view:
| View | Command/Trigger | Output | |------|-----------------|--------| | Service Dependency Graph | "dependency graph", "show dependencies" | Mermaid graph | | Request Flow Maps | "request flows", "how requests flow" | Mermaid flowchart | | Event Topology | "event topology", "event map" | Mermaid graph | | Service Groupings | "group services", "services by domain" | Markdown tables | | Full Architecture | "architecture view", "full architecture" | All views combined |
mermaidgraph TD Gateway[api-gateway<br/>type: gateway] --> Auth[auth-service<br/>type: service] Gateway --> Users[user-service<br/>type: service] Gateway --> Orders[order-service<br/>type: service] Users --> DB[(user-db<br/>type: database)] Auth --> Redis[(redis<br/>type: cache)] Orders --> OrdersDB[(order-db<br/>type: database)] Orders --> Worker[order-processor<br/>type: worker]
Generation logic:
catalog-info.yamldependsOn relationships[(name)], others use [name]name and typemermaidflowchart LR Client[Client] --> Gateway[api-gateway] Gateway -->|/api/users/*| Users[user-service] Gateway -->|/api/auth/*| Auth[auth-service] Gateway -->|/api/orders/*| Orders[order-service] Users --> DB[(user-db)] Auth --> Redis[(redis)]
Generation logic:
routes to find downstream servicesmermaidgraph LR Orders[order-service] -->|order.placed| Kafka1[Kafka: order-placed] Orders -->|order.cancelled| Kafka2[Kafka: order-cancelled] Kafka1 --> User[user-service] Kafka1 --> Notif[notification-service] Kafka2 --> User Worker[order-processor] -->|order.processed| Kafka3[Kafka: order-processed] Kafka1 --> Worker
Generation logic:
eventProducers) and Kafka topics (from topic field)By Domain: | Domain | Services | Owner | |--------|----------|-------| | trading | order-service, trade-service, order-processor | trading-team | | platform | api-gateway, user-service, auth-service | platform-team | | shared | shared-utils, shared-types | platform-team |
By Type: | Type | Services | |------|----------| | gateway | api-gateway | | service | user-service, auth-service, order-service | | worker | order-processor, notification-worker | | library | shared-utils, shared-types |
Generation logic:
spec.domain fieldCollect all catalog-info.yaml files from repositories:
bash# Aggregate from repos directory python skills/arch-view/scripts/aggregate-metadata.py repos/ # Output as JSON python skills/arch-view/scripts/aggregate-metadata.py repos/ --format json # Output as summary python skills/arch-view/scripts/aggregate-metadata.py repos/ --summary
Convert aggregated metadata to Mermaid diagrams:
bash# Generate all views python skills/arch-view/scripts/generate-mermaid.py aggregated.json # Generate specific view python skills/arch-view/scripts/generate-mermaid.py aggregated.json --view dependency python skills/arch-view/scripts/generate-mermaid.py aggregated.json --view request-flow python skills/arch-view/scripts/generate-mermaid.py aggregated.json --view events
Launch subagents to read metadata in parallel:
For efficiency, launch multiple subagents simultaneously:
Subagent 1: "Read repos/api-gateway/catalog-info.yaml and return parsed YAML"
Subagent 2: "Read repos/user-service/catalog-info.yaml and return parsed YAML"
Subagent 3: "Read repos/order-service/catalog-info.yaml and return parsed YAML"
... (continue for all repos)
Collect results and aggregate.Tip: Limit to 5-10 concurrent subagents to avoid overwhelming the system.
Present results as:
markdown# Architecture View ## Summary - Total repositories: 15 - Components with metadata: 12 - Missing metadata: 3 - Gateways: 1 - Services: 8 - Workers: 2 - Libraries: 1 ## Service Dependency Graph [Mermaid diagram] ## Request Flow Map [Mermaid diagram] ## Event Topology [Mermaid diagram] ## Service Groupings [Markdown tables] ## Missing Metadata The following repositories lack catalog-info.yaml: - repo-a - repo-b - repo-c
references/view-templates.md - Mermaid templates for each view typereferences/mermaid-guide.md - Mermaid syntax referencescripts/aggregate-metadata.py - Collect catalog-info.yaml from all reposscripts/generate-mermaid.py - Convert metadata to Mermaid diagrams| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 8,590 | 6,948 | -19% | 1 | 1 | 0% | 1,514 | 2,729 | +80% | 0 | 0 | — |
case-01 | fail→fail | 8,402 | 9,613 | +14% | 1 | 1 | 0% | 379 | 2,112 | +457% | 0 | 0 | — |
case-02 | pass→fail | 8,936 | 15,217 | +70% | 1 | 1 | 0% | 1,643 | 2,182 | +33% | 0 | 0 | — |
case-03 | fail→fail | 13,331 | 9,970 | -25% | 1 | 1 | 0% | 511 | 2,234 | +337% | 0 | 0 | — |
case-04 | fail→pass | 19,566 | 3,944 | -80% | 1 | 1 | 0% | 2,265 | 2,593 | +14% | 0 | 0 | — |
case-06 | pass→pass | 7,701 | 3,701 | -52% | 1 | 1 | 0% | 436 | 2,446 | +461% | 0 | 0 | — |
case-07 | pass→pass | 15,106 | 9,570 | -37% | 1 | 1 | 0% | 1,818 | 2,741 | +51% | 0 | 0 | — |
case-08 | fail→pass | 19,881 | 9,398 | -53% | 1 | 1 | 0% | 2,310 | 3,410 | +48% | 0 | 0 | — |
case-09 | pass→pass | 16,381 | 4,216 | -74% | 1 | 1 | 0% | 2,043 | 2,674 | +31% | 0 | 0 | — |
case-10 | pass→pass | 26,347 | 8,265 | -69% | 1 | 1 | 0% | 1,473 | 2,348 | +59% | 0 | 0 | — |
case-11 | fail→pass | 16,574 | 8,767 | -47% | 1 | 1 | 0% | 1,880 | 2,576 | +37% | 0 | 0 | — |
case-12 | pass→pass | 16,170 | 8,167 | -49% | 1 | 1 | 0% | 2,130 | 2,461 | +16% | 0 | 0 | — |
case-13 | fail→pass | 21,841 | 8,381 | -62% | 1 | 1 | 0% | 2,334 | 2,522 | +8% | 0 | 0 | — |
case-14 | fail→pass | 13,231 | 4,950 | -63% | 1 | 1 | 0% | 2,087 | 2,711 | +30% | 0 | 0 | — |
case-15 | pass→pass | 16,040 | 9,828 | -39% | 1 | 1 | 0% | 1,724 | 2,663 | +54% | 0 | 0 | — |
case-16 | fail→pass | 15,105 | 9,755 | -35% | 1 | 1 | 0% | 1,937 | 2,330 | +20% | 0 | 0 | — |
case-17 | fail→pass | 14,784 | 7,659 | -48% | 1 | 1 | 0% | 1,730 | 2,372 | +37% | 0 | 0 | — |
case-18 | pass→pass | 11,282 | 1,888 | -83% | 1 | 1 | 0% | 990 | 2,201 | +122% | 0 | 0 | — |
case-19 | pass→pass | 15,309 | 10,478 | -32% | 1 | 1 | 0% | 1,812 | 2,788 | +54% | 0 | 0 | — |
case-20 | pass→fail | 9,555 | 14,860 | +56% | 1 | 1 | 0% | 1,814 | 2,394 | +32% | 0 | 0 | — |
case-21 | pass→pass | 17,123 | 7,701 | -55% | 1 | 1 | 0% | 2,170 | 3,341 | +54% | 0 | 0 | — |
case-22 | pass→pass | 16,496 | 19,875 | +20% | 1 | 1 | 0% | 2,200 | 4,678 | +113% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.