diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5d10491..81bcf91 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -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//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 diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 1239640..3a46dc4 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -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 @@ -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. @@ -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. diff --git a/docs/METRICS.md b/docs/METRICS.md index 659cf3a..31e1fd3 100644 --- a/docs/METRICS.md +++ b/docs/METRICS.md @@ -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. diff --git a/docs/ROLES.md b/docs/ROLES.md index ebdde50..0e28178 100644 --- a/docs/ROLES.md +++ b/docs/ROLES.md @@ -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. diff --git a/kb/outlook-reconnect-after-update.md b/kb/outlook-reconnect-after-update.md index 6754c93..53334ec 100644 --- a/kb/outlook-reconnect-after-update.md +++ b/kb/outlook-reconnect-after-update.md @@ -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 . ## 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 diff --git a/labs/000.lab-template.md b/labs/000.lab-template.md index c2a9581..e3cae08 100644 --- a/labs/000.lab-template.md +++ b/labs/000.lab-template.md @@ -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 @@ -40,7 +40,7 @@ ## Metrics / Feedback - Estimated time to complete: [e.g., "15 minutes"] -- Common errors: [e.g., "‘ not found’ ( not installed)"] +- Common errors: [e.g., "‘ not found’ ( not installed)"] - Links: [/tickets/[incident].md or /scenarios/[scenario].md] ## Cleanup diff --git a/labs/nginx-startup-fail.md b/labs/nginx-startup-fail.md index acdec8c..c34313d 100644 --- a/labs/nginx-startup-fail.md +++ b/labs/nginx-startup-fail.md @@ -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) @@ -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 and see “Nginx is up” +- Browse 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 @@ -107,10 +108,10 @@ 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. @@ -118,7 +119,7 @@ Time: ~10–15 min • Difficulty: Beginner - 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) diff --git a/scenarios/000.scenario-template.md b/scenarios/000.scenario-template.md index ca70a04..ffd6b14 100644 --- a/scenarios/000.scenario-template.md +++ b/scenarios/000.scenario-template.md @@ -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 diff --git a/scenarios/README.md b/scenarios/README.md index fb472d2..8f89605 100644 --- a/scenarios/README.md +++ b/scenarios/README.md @@ -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) diff --git a/tickets/README.md b/tickets/README.md index 1082139..24e1b5a 100644 --- a/tickets/README.md +++ b/tickets/README.md @@ -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) diff --git a/tickets/account-locked-out.md b/tickets/account-locked-out.md index 3eca812..80b1c84 100644 --- a/tickets/account-locked-out.md +++ b/tickets/account-locked-out.md @@ -1,4 +1,4 @@ -# Ticket: Account locked out – cannot log in +# Ticket: Account locked out – cannot log in **Category:** Account **Priority:** High diff --git a/tickets/outlook-disconnected-password-prompts.md b/tickets/outlook-disconnected-password-prompts.md index c05d2be..e188366 100644 --- a/tickets/outlook-disconnected-password-prompts.md +++ b/tickets/outlook-disconnected-password-prompts.md @@ -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