Initial skills documentation — 25 categories, all SKILL.md + references + scripts
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Silent Cascade Failure — JS TypeError Kills Async Operations
|
||||
|
||||
## Pattern (discovered Jul 12, 2026)
|
||||
|
||||
A single `TypeError` (e.g. `.classList.add()` on a `null` element) in early synchronous inline script kills ALL subsequent code — including `fetch()` calls that would load nav, content, or UI elements.
|
||||
|
||||
The symptom surface is confusing: blank page, no menu, no content, no visible error.
|
||||
|
||||
## Example
|
||||
|
||||
```javascript
|
||||
// WRONG — crashes before nav fetch runs
|
||||
if (Ops.isAuthenticated()) {
|
||||
overlay.classList.remove('show');
|
||||
document.getElementById('logoutBtn').classList.add('show'); // TypeError if nav not loaded
|
||||
loadContent(); // Never runs
|
||||
}
|
||||
fetch('/nav.html').then(...) // Never runs either
|
||||
```
|
||||
|
||||
## Fix pattern
|
||||
|
||||
Always guard DOM lookups that depend on async-loaded content:
|
||||
|
||||
```javascript
|
||||
// Wait for async content before accessing
|
||||
var wait = setInterval(function() {
|
||||
var el = document.getElementById('logoutBtn');
|
||||
if (el) {
|
||||
el.classList.add('show');
|
||||
clearInterval(wait);
|
||||
loadContent();
|
||||
}
|
||||
}, 100);
|
||||
```
|
||||
|
||||
## Prevention checklist
|
||||
|
||||
- [ ] Every `getElementById()` call is guarded (especially elements from fetched templates)
|
||||
- [ ] Auth logic does NOT touch DOM elements from separate fetches
|
||||
- [ ] `fetch()` / `setInterval()` are NOT placed after unguarded DOM access
|
||||
- [ ] Inline scripts tolerate missing elements without crashing
|
||||
@@ -0,0 +1,33 @@
|
||||
# Standing Subagent Roles Specification
|
||||
|
||||
Captured from the Jul 8-9, 2026 sessions. These are persistent team definitions, not one-off delegations.
|
||||
|
||||
## Network Services Team
|
||||
|
||||
Standing SME team for managing servers/systems infrastructure.
|
||||
|
||||
| Role | Domain | Responsibility |
|
||||
|------|--------|---------------|
|
||||
| Team Lead | Orchestrator | Delegates tasks, reports to Germaine, coordinates across SME subs |
|
||||
| Server Admin | Hetzner/netcup | Inventory, provisioning, health monitoring, spec management |
|
||||
| Network Engineer | MikroTik/Ubiquiti/DNS | Router configs, tower backups, connectivity, topology |
|
||||
| Backup Specialist | S3/DR | Bucket management, restore testing, sync scripts |
|
||||
| UI Specialist | Dashboard/accessibility | Page builds, W3C pass, mobile UX, interactive patterns |
|
||||
|
||||
## UI Team
|
||||
|
||||
Standing design team for modern interface creation.
|
||||
|
||||
| Role | Responsibility |
|
||||
|------|---------------|
|
||||
| Lead Designer | Art direction, layout, composition |
|
||||
| HTML/CSS Specialist | W3C-compliant implementation, accessibility enforcement |
|
||||
| Visual/Comm Artist | Graphic design, color, typography, branding |
|
||||
|
||||
Works with the interactive design team. Separate from Network Services Team's UI Specialist (who handles ops dashboard/accessibility).
|
||||
|
||||
## When to use standing teams vs ad-hoc delegation
|
||||
|
||||
- Use standing team for recurring classes of work
|
||||
- Delegate to Team Lead (role=orchestrator) who further delegates to SME leads
|
||||
- Use ad-hoc for one-off tasks
|
||||
Reference in New Issue
Block a user