Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,29 @@ Briefly describe what this PR adds or changes.
- [ ] Clear, reproducible steps and plain language
- [ ] Relative links resolve inside the repo
- [ ] Avoid duplication across modules (KB = productized steps; Lab = full commands + Verification; Scenario = flow/success, links only)
- [ ] Deep link to sections where applicable (KB → #resolution-steps, Lab → #verification)
- [ ] Deep link to sections where applicable (KB #resolution-steps, Lab #verification)
- Metadata
- [ ] Owner set; Last Reviewed and Next Review Due (KB/Lab)
- [ ] Escalation Path filled (Ticket)
- [ ] Metrics block added if useful (see docs/METRICS.md)
- Quality
- [ ] Verification steps included (expected outputs / pass-fail)
- [ ] Anchors exist and resolve (KB “Resolution Steps”, Lab “Verification”)
- [ ] Scenario (if present) ties Ticket → KB → Lab and defines success criteria
- [ ] Anchors exist and resolve (KB “Resolution Steps”, Lab “Verification”)
- [ ] Scenario (if present) ties Ticket KB Lab and defines success criteria

### Labs (if included)

- [ ] Dedicated “Verification” section with expected outputs
- [ ] Dedicated “Verification” section with expected outputs
- [ ] Images pinned if using containers; HTTP services include a simple healthcheck when applicable
- [ ] Assets stored under `labs/<lab>/assets/`

### KBs (if included)

- [ ] Brief (1–2 lines) verification; link to related Lab for full commands
- [ ] Brief (1–2 lines) verification; link to related Lab for full commands

### Scenarios (if included)

- [ ] Uses deep links to KB “Resolution Steps” and Lab “Verification” (no step duplication)
- [ ] Uses deep links to KB “Resolution Steps” and Lab “Verification” (no step duplication)

## Notes

Expand Down
8 changes: 4 additions & 4 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This repo simulates real helpdesk workflows using Markdown contributions. Agents
- Tickets (`/tickets/`): user-reported issues
- Knowledge Base (`/kb/`): solution docs derived from tickets
- Labs (`/labs/`): hands-on practice exercises
- Scenarios (`/scenarios/`): end-to-end flows linking ticket → KB → lab
- Scenarios (`/scenarios/`): end-to-end flows linking ticket KB lab
- Use templates in each folder (`000.*-template.md`).

## Key Files
Expand All @@ -21,7 +21,7 @@ This repo simulates real helpdesk workflows using Markdown contributions. Agents

## Authoring Patterns

- Follow CompTIA A+ 6-step model: Identify → Theory → Test → Plan/Implement → Verify → Document.
- Follow CompTIA A+ 6-step model: Identify Theory Test Plan/Implement Verify Document.
- Keep language plain and steps reproducible. Include environment details (OS/version), verification, and escalation path.
- Link artifacts with relative paths (e.g., `/tickets/printer-failure.md` in KB/Lab/Scenario).
- Use checklists for Tier 1/2/3 completion; mark what you actually did.
Expand Down Expand Up @@ -49,8 +49,8 @@ This repo simulates real helpdesk workflows using Markdown contributions. Agents

## What NOT to do

- Don’t invent infrastructure or public endpoints; this repo is markdown-only.
- Don’t add personal IPs or credentials.
- Don’t invent infrastructure or public endpoints; this repo is markdown-only.
- Don’t add personal IPs or credentials.

---
Clarifications welcome: if any folder structure or template changes, update this file to match.
Expand Down
2 changes: 1 addition & 1 deletion docs/METRICS.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,5 @@ Example block for KBs:

## Keep It Practical

- No dashboards required—just fill fields in Markdown.
- No dashboards required—just fill fields in Markdown.
- Prefer consistency over precision.
2 changes: 1 addition & 1 deletion docs/ROLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Tip: In KBs and Labs, use metadata fields like Owner, Last Reviewed, Next Review
- Tier 1 (Frontline)
- Scope: Single-user issues, basic checks, standard fixes.
- Typical actions: Verify problem, collect environment, reproduce, apply known fixes.
- Timebox: 10–20 minutes before escalating.
- Timebox: 10–20 minutes before escalating.
- Tier 2 (Specialist)
- Scope: Drivers, services, complex app configs, small network issues.
- Typical actions: Logs review, driver/config changes, targeted scripts.
Expand Down
6 changes: 3 additions & 3 deletions kb/outlook-reconnect-after-update.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@

1. Validate user credentials on another system (SSO/portal) to rule out auth failure.
2. Check VPN/Network connectivity (if remote): ensure stable connection.
3. Toggle Cached Exchange Mode (disable → enable) and restart Outlook.
3. Toggle Cached Exchange Mode (disable enable) and restart Outlook.
4. Clear Windows Credential Manager entries for Office/Outlook; restart Outlook.
5. If needed, create a new Outlook profile (Control Panel → Mail → Profiles).
5. If needed, create a new Outlook profile (Control Panel Mail Profiles).
6. Verification: Outlook shows Connected; send/receive works. In lab, MailHog captures a test message at <http://localhost:8025/>.

## Troubleshooting Notes

- After updates, Autodiscover or token cache can cause loops; clearing credentials/profile often resolves.
- If organization-wide, check Exchange/identity provider status and service health.
- Logs: Windows Event Viewer → Application (Outlook), Office logs.
- Logs: Windows Event Viewer Application (Outlook), Office logs.

## Linked Incidents

Expand Down
4 changes: 2 additions & 2 deletions labs/000.lab-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

- [Expected outcome, e.g., "Run lpstat -p; confirm printer is enabled"]
- [Pass condition, e.g., "Test page prints successfully"]
- [Fail condition, e.g., "Error: ‘printer not found’"]
- [Fail condition, e.g., "Error: printer not found’"]

## Escalation Context

Expand All @@ -40,7 +40,7 @@
## Metrics / Feedback

- Estimated time to complete: [e.g., "15 minutes"]
- Common errors: [e.g., "‘<service> not found’ (<service> not installed)"]
- Common errors: [e.g., "<service> not found’ (<service> not installed)"]
- Links: [/tickets/[incident].md or /scenarios/[scenario].md]

## Cleanup
Expand Down
69 changes: 35 additions & 34 deletions labs/nginx-startup-fail.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ Make a broken web server boot again by fixing a one-word typo.

## Why this matters (30 seconds)

This is what real-life looks like: “my web page won’t load” and the container keeps restarting. Your job is to read the logs, spot the typo, make a tiny change, and prove the fix.
This is what real-life looks like: “my web page won’t load” and the container keeps restarting. Your job is to read the logs, spot the typo, make a tiny change, and prove the fix.

## Objectives

- Diagnose a containerized Nginx startup failure
- Fix a simple configuration error and verify success

Time: ~10–15 min • Difficulty: Beginner
Time: ~10–15 min Difficulty: Beginner

## Prerequisites (quick preflight)

Expand All @@ -42,48 +42,49 @@ Time: ~10–15 min • Difficulty: Beginner

## Steps

1) Start the broken stack (from repo root)
1. Start the broken stack (from repo root)

- PowerShell
PowerShell:

```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml up -d
```
```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml up -d
```

Bash:

```bash
docker compose -f ./labs/nginx-startup-fail/assets/compose.yaml up -d
```

2. Observe the failure

- Bash
Status:

```bash
docker compose -f ./labs/nginx-startup-fail/assets/compose.yaml up -d
```
```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml ps
```

2) Observe the failure
- Status
Logs (look for "unknown directive" or "invalid"):

```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml ps
```
```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml logs nginx
```

- Logs (look for “unknown directive” or “invalid”)
3. Identify the issue

```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml logs nginx
```
Open `labs/nginx-startup-fail/assets/nginx.conf` and find the misspelled directive. Fix the typo.

3) Identify the issue
- Open `labs/nginx-startup-fail/assets/nginx.conf`
- Find the misspelled directive and fix the typo
1. Fix and retry

4) Fix and retry
- Change `roooot` to `root` in nginx.conf
- Recreate the container
Change `roooot` to `root` in nginx.conf, then recreate the container:

```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml up -d --force-recreate
```
```powershell
docker compose -f .\labs\nginx-startup-fail\assets\compose.yaml up -d --force-recreate
```

## Verification (success criteria)

- Browse <http://localhost:8080> and see “Nginx is up”
- Browse <http://localhost:8080> and see “Nginx is up”
- Container health should go to `healthy` once the page is served
- Or use a CLI check:
- Check health status quickly
Expand All @@ -107,18 +108,18 @@ Time: ~10–15 min • Difficulty: Beginner
# Expect: 200
```

## Hints (if you’re stuck)
## Hints (if you’re stuck)

- Re-run logs and read the first error: it usually tells you exactly what Nginx didn’t understand.
- If the fix doesn’t apply, make sure you recreated the container with `--force-recreate`.
- Re-run logs and read the first error: it usually tells you exactly what Nginx didn’t understand.
- If the fix doesn’t apply, make sure you recreated the container with `--force-recreate`.
- If port 8080 is busy, edit `compose.yaml` and change `8080:80` to another free port (e.g., `8081:80`).
- On Windows, if you see file permission issues, temporarily remove `:ro` from the volume lines to test.

## Metrics / Feedback

- Estimated time: 10 minutes
- Common pitfalls: wrong compose path; forgetting `--force-recreate` after config changes
- Optional next step: write a KB titled “Nginx: fix startup syntax errors” linking this lab
- Optional next step: write a KB titled “Nginx: fix startup syntax errors” linking this lab

## Bonus challenges (optional)

Expand Down
2 changes: 1 addition & 1 deletion scenarios/000.scenario-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Briefly describe the user story and desired outcome.

## Success Criteria

- [ ] Ticket resolved (what “resolved” means here)
- [ ] Ticket resolved (what “resolved” means here)
- [ ] KB validated (up-to-date and accurate)
- [ ] Lab passes verification steps

Expand Down
2 changes: 1 addition & 1 deletion scenarios/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Scenarios Index

End-to-end flows that link Ticket → KB → Lab. Use scenarios to tell the story and define success criteria.
End-to-end flows that link Ticket KB Lab. Use scenarios to tell the story and define success criteria.

- Template: [000.scenario-template.md](./000.scenario-template.md)

Expand Down
2 changes: 1 addition & 1 deletion tickets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Conventions:

Examples:

- [Account locked out – cannot log in](./account-locked-out.md)
- [Account locked out cannot log in](./account-locked-out.md)
- [Cannot print to shared Finance printer](./cannot-print-to-shared-printer.md)
- [Outlook disconnected and password prompts](./outlook-disconnected-password-prompts.md)
- [Computer is running extremely slow / lagging](./computer-running-slow-lagging.md)
2 changes: 1 addition & 1 deletion tickets/account-locked-out.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Ticket: Account locked out – cannot log in
# Ticket: Account locked out cannot log in

**Category:** Account
**Priority:** High
Expand Down
2 changes: 1 addition & 1 deletion tickets/outlook-disconnected-password-prompts.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
**System/Component:** Microsoft Outlook (Cached Mode), Exchange Server

**Problem:** Outlook disconnects and repeatedly prompts for password after a company security update.
**Symptoms:** Disconnected status; repeated password prompts; can’t send/receive recent emails.
**Symptoms:** Disconnected status; repeated password prompts; can’t send/receive recent emails.
**Environment:** Laptop (potentially remote); VPN in use when offsite.

## Troubleshooting Steps Taken
Expand Down