name: mega-capstone-creator description: Generates a multi-domain Mega Capstone lab spanning all chapter domains for an exam series. Use only when invoked via the /mega-capstone command after all chapter capstones are approved. Produces a complete lab package in labs/mega-capstone/.
Mega Capstone Creator Skill
Generates a single integrated multi-domain lab that validates mastery across all topics simultaneously. This is the final deliverable of the entire lab series.
-# Instructions
--# Step 1: Read All Chapter Baselines
Before generating anything, read all 7 chapter baseline files:
labs/eigrp/baseline.yamllabs/ospf/baseline.yamllabs/bgp/baseline.yamllabs/redistribution/baseline.yamllabs/vpn/baseline.yamllabs/infrastructure-security/baseline.yamllabs/infrastructure-services/baseline.yaml
Extract per-chapter: IP addressing ranges, device roles, loopback conventions. Use these as reference when assigning Mega Capstone IPs — do NOT reuse the same subnets. Assign a fresh 10.x.x.x addressing plan.
--# Step 2: Define the Mega Capstone Topology
The Mega Capstone uses approximately 10 routers covering all 7 domains. Write labs/mega-capstone/baseline.yaml as a standalone topology definition (not chained from any chapter).
Device roles and zones:
| Device | Platform | Role | Domain |
|---|---|---|---|
| R1 | iosv | EIGRP Hub / DMVPN Hub | EIGRP, VPN |
| R2 | iosv | EIGRP Branch A / DMVPN Spoke | EIGRP, VPN |
| R3 | iosv | EIGRP Branch B / DMVPN Spoke | EIGRP, VPN |
| R4 | iosv | OSPF ABR (Area 0 / Area 1) / EIGRP-OSPF Redistribution Boundary | OSPF, Redistribution |
| R5 | iosv | OSPF Area 1 Internal | OSPF |
| R6 | iosv | eBGP Edge / OSPF-BGP Redistribution Boundary / Edge Security | BGP, Redistribution, Security |
| R7 | iosv | OSPF Area 0 Internal | OSPF |
| R8 | iosv | Services Router (DHCP server, IP SLA source) | Infrastructure Services |
| R9 | iosv | IP SLA target / SNMP management | Infrastructure Services |
| SW1 | — | VPCS / syslog+SNMP collector (simulated as loopback on R9) | Infrastructure Services |
Addressing plan (fresh — do not reuse chapter subnets):
- Loopbacks: 10.100.0.x/32 (megacap devices)
- EIGRP zone transit: 10.200.12.0/30, 10.200.13.0/30, 10.200.23.0/30
- EIGRP↔OSPF boundary: 10.200.14.0/30 (R1-R4)
- OSPF zone transit: 10.200.45.0/30, 10.200.47.0/30, 10.200.46.0/30
- OSPF↔BGP boundary: 10.200.46.0/30 (R4-R6)
- BGP: R6 uses 192.0.2.0/30 toward simulated ISP (loopback on R6)
- DMVPN: 10.200.0.0/24 (mGRE tunnel, R1=hub .1, R2=spoke .2, R3=spoke .3)
- Services: 10.200.99.0/24 (DHCP pool on R8 for simulated clients)
- IPv6: 2001:db8:200::/48 prefix space, per-link /64s
Console ports: Dynamic — assigned by EVE-NG at lab creation. Populate the Console Access Table in workbook.md Section 3 from the EVE-NG web UI after creating the lab.
labs/mega-capstone/baseline.yaml schema: Same format as chapter baselines. Mark standalone: true at the top level to indicate this is not chained from any chapter.
--# Step 3: Write baseline.yaml
Write labs/mega-capstone/baseline.yaml with:
chapter: mega-capstonestandalone: trueexam: 300-410 ENARSIblueprint_sections:— list all 7 chapter domains (1.9, 1.10, 1.11, 1.2–1.8, 2.1–2.4, 3.1–3.4, 4.1–4.7)- Full
core_topologywith all 9 active devices and all links - No
optional_devices(all devices are always active) - Single lab entry: number 1, type
mega_capstone,clean_slate: true
--# Step 4: Generate workbook.md
Write the full 10-section workbook. Special guidance for this lab:
Section 1 — Concepts & Skills Covered: List all 7 chapter domains and the specific blueprint bullets from each. This lab validates all of them.
Section 2 — Topology & Scenario: Enterprise narrative: "AcmeCorp is consolidating its multi-site network. R1–R3 form the EIGRP WAN core. R4 connects the EIGRP domain to the OSPF campus. R6 connects to the upstream ISP via eBGP. DMVPN tunnels provide encrypted branch connectivity. The network team has been asked to commission the entire infrastructure in a single maintenance window."
Include the full ASCII topology diagram (Unicode box-drawing) showing all 9 routers, zones, and all link IPs.
Section 3 — Hardware & Environment: Full cabling table + Console Access Table for all 9 devices.
Section 5 — Lab Challenge (multi-domain):
## 5. Lab Challenge: ENARSI Mega Capstone
> This is the final capstone lab. No step-by-step guidance is provided.
> Complete all domain objectives from scratch. IP addressing is pre-configured.
> All 300-410 ENARSI blueprint bullets must be addressed.
### Domain 1: EIGRP (R1, R2, R3, R4)
- Configure EIGRP Named Mode AS 200 on R1, R2, R3
- Enable dual-stack IPv4 + IPv6 address families
- Set R4 as EIGRP stub (connected summary)
### Domain 2: OSPF (R4, R5, R6, R7)
- Configure OSPFv2 on R4 (ABR: Area 0 and Area 1), R5 (Area 1), R6 (Area 0), R7 (Area 0)
- Configure Area 1 as a stub area
- Verify full OSPF convergence and LSA types
### Domain 3: BGP (R6)
- Configure eBGP between R6 (AS 65001) and simulated ISP (AS 65002, R6 loopback)
- Advertise the OSPF summary into BGP
- Apply a route-map to set local-preference for inbound routes
### Domain 4: Redistribution (R4, R6)
- Redistribute EIGRP into OSPF on R4 (set metric-type E2, tag 100)
- Redistribute OSPF into BGP on R6
- Prevent routing loops using route tags
### Domain 5: VPN (R1, R2, R3)
- Configure DMVPN Phase 2 (mGRE + NHRP) on R1 (hub), R2 and R3 (spokes)
- Run EIGRP over the DMVPN tunnel
- Verify spoke-to-spoke traffic takes a direct tunnel path
### Domain 6: Infrastructure Security (R6, R4)
- Apply an inbound ACL on R6's external interface to permit only HTTP, HTTPS, and ICMP from the ISP
- Configure CoPP on R4 to rate-limit OSPF hellos and ICMP to the control plane
- Verify ACL hit counters and CoPP policy statistics
### Domain 7: Infrastructure Services (R8, R9)
- Configure R8 as a DHCP server for the 10.200.99.0/24 pool; exclude the first 10 addresses
- Configure IP SLA on R8 to probe R9's loopback every 10 seconds; set a track object
- Configure SNMP v2c community read-only on R9; set syslog to R9's loopback
- Verify DHCP lease assignment and IP SLA probe status
Section 8 — Solutions:
One <details> spoiler block per domain (7 blocks), each containing all device configs for that domain.
Section 9 — Troubleshooting Scenarios: 7 tickets — one per chapter domain. Each ticket is a standalone fault covering only that domain's protocols.
- Ticket 1: EIGRP — R2 and R3 no longer form adjacency with R1
- Ticket 2: OSPF — R5 (Area 1) is missing routes from Area 0
- Ticket 3: BGP — R6 is not advertising the OSPF summary to the ISP
- Ticket 4: Redistribution — EIGRP routes are appearing in OSPF with metric-type E1 instead of E2
- Ticket 5: VPN — R2 spoke cannot reach R3 spoke directly (all traffic hairpins through R1)
- Ticket 6: Security — Legitimate OSPF traffic is being dropped by CoPP on R4
- Ticket 7: Services — DHCP clients on R8's pool are not receiving addresses; IP SLA probe is down
Section 10 — Checklist: Two groups: "Domain Configuration" (7 checkboxes) and "Troubleshooting Scenarios" (7 checkboxes).
--# Step 5: Generate initial-configs/
IOS Compatibility: Before writing any config in Steps 5 and 6, check commands against
.agent/skills/reference-data/ios-compatibility.yaml. For commands not in the file, follow the 2a–2f verification sub-steps fromlab-assembler/SKILL.md.
Clean slate — IP addressing only. No routing protocols, no VPN, no ACLs, no DHCP.
One .cfg per active device. Each config contains:
hostname [Device]no ip domain-lookup- Interface IP addresses (IPv4 + IPv6)
ipv6 unicast-routing- Loopback0 with its IPv4/IPv6 address
no shutdownon all configured interfaces- Console/VTY access (
line con 0+line vty 0 4withtransport input telnet)
--# Step 6: Generate solutions/
Complete IOS configurations per device implementing all 7 domain objectives. One .cfg per device.
--# Step 7: Generate topology.drawio
Full topology diagram following the drawio Visual Style Guide. Use drawio skill to validate.
Zones should be visually grouped:
- EIGRP zone (R1-R3): left cluster
- OSPF zone (R4, R5, R7): center cluster
- BGP edge (R6): right edge
- DMVPN cloud: overlay on EIGRP zone
- Services (R8, R9): bottom cluster
--# Step 8: Generate setup_lab.py
Netmiko script connecting to all 9 devices via cisco_ios_telnet to EVE-NG host + dynamic ports. Accepts --host <eve-ng-ip> argument. Same structure as chapter lab setup scripts.
--# Step 9: Generate scripts/fault-injection/
7 inject scripts — one per domain:
inject_scenario_01.py— EIGRP faultinject_scenario_02.py— OSPF faultinject_scenario_03.py— BGP faultinject_scenario_04.py— Redistribution faultinject_scenario_05.py— VPN faultinject_scenario_06.py— Security faultinject_scenario_07.py— Services faultapply_solution.py— Restore all 9 devices to known-good (solutions/ state)README.md— Ops-only (no challenge descriptions; reference workbook.md Section 9)
Invoke the fault-injector skill to generate these based on the Section 9 ticket descriptions.
--# Step 10: Write meta.yaml
After the fault-injector skill completes, write labs/mega-capstone/meta.yaml.
- Get
skill_version: rungit -C .agent/skills log --format="%ci" -1and take the date portion (YYYY-MM-DD). - Get today's date (YYYY-MM-DD).
- Glob all files created in this lab directory (recursive, relative paths).
- Write
labs/mega-capstone/meta.yaml:
# Auto-generated — do not edit manually. Use /tag-lab to stamp external agent runs.
lab: mega-capstone
chapter: mega-capstone
created:
date: "[YYYY-MM-DD]"
agent: claude-sonnet-4-6
skill: mega-capstone
skill_version: "[YYYY-MM-DD]"
files:
- baseline.yaml
- workbook.md
- topology.drawio
- setup_lab.py
- initial-configs/R1.cfg
# ... one entry per device
- solutions/R1.cfg
# ... one entry per device
- scripts/fault-injection/inject_scenario_01.py
# ... one per scenario
- scripts/fault-injection/apply_solution.py
- scripts/fault-injection/README.md
updated: []
List every file actually created — adjust device names and inject script count to match.
--# Step 11: Update Progress & Mindmap
- Update
memory/progress.md— add a Mega Capstone row with status "Review Needed". - Update the
README.mdmindmap — add a Mega Capstone branch with◉ Mega Capstone.
-# Output Directory
labs/mega-capstone/
├── baseline.yaml
├── workbook.md
├── topology.drawio
├── initial-configs/
│ ├── R1.cfg
│ ├── R2.cfg
│ ├── R3.cfg
│ ├── R4.cfg
│ ├── R5.cfg
│ ├── R6.cfg
│ ├── R7.cfg
│ ├── R8.cfg
│ └── R9.cfg
├── solutions/
│ └── [same per-device structure]
├── setup_lab.py
└── scripts/fault-injection/
├── inject_scenario_01.py
├── inject_scenario_02.py
├── inject_scenario_03.py
├── inject_scenario_04.py
├── inject_scenario_05.py
├── inject_scenario_06.py
├── inject_scenario_07.py
├── apply_solution.py
└── README.md
-# Common Issues
--# Chapter baseline not found
- Cause: One or more chapter labs were never generated; baseline.yaml doesn't exist.
- Solution: Stop. The
/mega-capstonecommand pre-flight check should have caught this. Return to the/mega-capstonecommand and report which chapter baselines are missing.
--# IP address conflict with chapter labs
- Cause: Mega Capstone IPs overlap with a chapter's baseline addressing (both use 10.0.0.x loopbacks).
- Solution: Use the 10.100.0.x/32 loopback range and 10.200.x.x/30 transit ranges reserved exclusively for the Mega Capstone. Never reuse chapter IP ranges.
--# Too many devices — EVE-NG resource planning
- Cause: 9 IOSv nodes × 512 MB = ~4.5 GB RAM. Within the 64 GB host capacity but worth noting.
- Solution: All 9 nodes should run comfortably on the Dell i7-1370P/64 GB host. If resource contention occurs, run in two segments: EIGRP+VPN (R1-R3) first, then OSPF+BGP (R4-R7) separately. Note: boot time for 9 IOSv nodes is approximately 2–3 minutes total.
-# Examples
User: "/mega-capstone" (via the mega-capstone slash command, all chapter capstones approved)
Actions:
- Read all 7 chapter baseline.yaml files for IP reference.
- Write
labs/mega-capstone/baseline.yamlwith 9-device standalone topology. - Write
labs/mega-capstone/workbook.md— 10 sections, 7-domain challenge, 7 troubleshooting tickets. - Generate
initial-configs/(IP addressing only, 9 devices). - Generate
solutions/(full 7-domain configs, 9 devices). - Generate
topology.drawioviadrawioskill. - Generate
setup_lab.pyfor 9 devices with--host <eve-ng-ip>and dynamic ports (populated from EVE-NG web UI). - Invoke
fault-injectorskill to generate 7 inject scripts +apply_solution.py. - Update
memory/progress.md— add Mega Capstone row with status Review Needed.