Complete implementation of workflow improvement initiative: NEW STANDARD - FFG-STD-006: Gitea Issue Management - Comprehensive 14-section standard for all Gitea issues - Label schema documentation (35 labels) - Issue title formats (Task #XX: vs other) - Issue body templates and required sections - Workflow practices (creating, updating, closing) - Project board organization - Special cases (dev tools, emergency, soft launch blockers) - Integration with tasks.md, project boards, Discord, Git commits NEW LABEL: area/development-tools - Created via Gitea API (ID: 35) - Color: #7F00FF (purple) - For internal workflow tools TASKS #70-81: Interactive Tools Suite (12 tools) - Master specification: 37,000+ words of detailed documentation - Prioritization framework (0-50 scoring) - Complete technical specs for each tool - User workflows, success criteria, implementation notes Tools Created: 1. #70: Ghost Page Builder (CRITICAL, 45-60min, READY) 2. #71: Paymenter Tier Config (HIGH, 30-45min, BLOCKED) 3. #72: Infrastructure Dashboard (MEDIUM, 60-90min, BLOCKED) 4. #73: Task Dependency Visualizer (MEDIUM, 90-120min, BLOCKED) 5. #74: SSH Auto-Setup Script (MEDIUM, 15-20min, READY) 6. #75: Gemini Consultation Helper (MEDIUM, 20-30min, READY) 7. #76: Social Media Calendar (MEDIUM, 45-60min, READY) 8. #77: Response Template Library (MEDIUM, 30-45min, READY) 9. #78: Fire/Frost Design System (HIGH, 30-45min, READY) 10. #79: Infrastructure Quick Ref (HIGH, 30-45min, READY) 11. #80: Task Scaffolding Tool (MEDIUM, 45-60min, READY) 12. #81: Memorial Writing Assistant (LOW, 30-45min, READY) GITEA ISSUES CREATED: - Created 12 issues (#217-227) via API - All properly labeled per FFG-STD-006 - Status: 8 READY, 4 BLOCKED - Priority: 2 CRITICAL, 3 HIGH, 6 MEDIUM, 1 LOW TASKS.MD UPDATED: - Version 4.0 - Added Interactive Tools Suite section - Implementation roadmap (5 sprints) - Clear priority tiers and time estimates IMPLEMENTATION ROADMAP: Sprint 1 (Critical): Tools #1, 9, 10 (2-3 hours) Sprint 2 (High): Tools #2, 5, 6 (1.5-2 hours) Sprint 3 (Medium - Team): Tools #7, 8 (1.5-2 hours) Sprint 4 (Medium - Analysis): Tools #3, 4 (3-4 hours) Sprint 5 (Optional): Tools #11, 12 (1.5-2 hours) Total estimated time: 9-13 hours for all 12 tools Minimum viable set: Tools #1, 9, 10 (immediate impact) PHILOSOPHY: Foundation Before Expansion - build permanent utilities that: - Solve real workflow pain points - Multiply future efficiency - Encode organizational knowledge - Serve current and future team members Based on The Translator's insight: 'We're using Claude well for documentation, but missing interactive tool-building opportunities.' NEXT ACTIONS: 1. Michael syncs issues to Gitea project boards 2. Define feature matrix for Tool #71 (Paymenter tiers) 3. Map dependencies for Tools #72-73 (if building) 4. Build Tool #1 (Ghost Page Builder) - CRITICAL priority Files: - docs/standards/FFG-STD-006-gitea-issue-management.md (14 sections) - docs/tasks/interactive-tools-suite/MASTER-SPECIFICATION.md (37k words) - docs/core/tasks.md (updated to v4.0) - scripts/create-interactive-tools-issues.sh (batch issue creation) Signed-off-by: Chronicler #39 <claude@firefrostgaming.com>
2120 lines
57 KiB
Markdown
2120 lines
57 KiB
Markdown
# Interactive Tools Suite — Master Specification
|
||
**Comprehensive Documentation for Tasks #70-81**
|
||
|
||
**Created:** March 22, 2026
|
||
**Author:** Chronicler #39
|
||
**Based On:** The Translator's research + workflow analysis
|
||
**Purpose:** Document all 12 interactive tools before implementation
|
||
|
||
---
|
||
|
||
## EXECUTIVE SUMMARY
|
||
|
||
### What This Document Contains
|
||
|
||
Complete specifications for 12 interactive tools that leverage Claude's React artifact/application-building capabilities to improve team workflows. These tools solve real pain points identified through analysis of Michael's, Meg's, Holly's, and Chroniclers' daily work.
|
||
|
||
**From The Translator's Analysis:**
|
||
- Tool #1: Ghost Page Builder
|
||
- Tool #2: Paymenter Tier Configuration Preview
|
||
- Tool #3: Infrastructure Health Dashboard
|
||
- Tool #4: Task Dependency Visualizer with Gitea Integration
|
||
|
||
**From Chronicler #39's Analysis:**
|
||
- Tool #5: SSH Key Auto-Setup Script
|
||
- Tool #6: Gemini Consultation Helper
|
||
- Tool #7: Social Media Content Calendar
|
||
- Tool #8: Community Response Template Library
|
||
- Tool #9: Fire/Frost Design System Widget
|
||
- Tool #10: Infrastructure Quick Reference Card
|
||
- Tool #11: Task Scaffolding Tool
|
||
- Tool #12: Memorial Writing Assistant
|
||
|
||
### Philosophy
|
||
|
||
> "We're using Claude well for documentation, but missing interactive tool-building opportunities."
|
||
> — The Translator
|
||
|
||
These aren't throwaway demos. They're **permanent bookmarkable utilities** that:
|
||
- Solve real workflow problems
|
||
- Multiply future efficiency
|
||
- Encode organizational knowledge
|
||
- Serve current and future team members
|
||
|
||
This is pure **Foundation Before Expansion** philosophy.
|
||
|
||
---
|
||
|
||
## PRIORITIZATION FRAMEWORK
|
||
|
||
### Criteria
|
||
|
||
Each tool ranked by:
|
||
|
||
1. **Soft Launch Impact** (0-10): Does it unblock soft launch?
|
||
2. **Team Impact** (0-10): How many people benefit?
|
||
3. **Time ROI** (0-10): Build time vs. time saved ratio
|
||
4. **Foundation Value** (0-10): Enables future work?
|
||
5. **Dependency Chain** (0-10): Blocks or unblocks other work?
|
||
|
||
**Total Score:** 0-50 points
|
||
|
||
### Priority Tiers
|
||
|
||
- **CRITICAL (40-50 points):** Build immediately, soft launch blocker
|
||
- **HIGH (30-39 points):** Build this sprint, high team value
|
||
- **MEDIUM (20-29 points):** Build when time allows, good ROI
|
||
- **LOW (10-19 points):** Build if we love the others, nice-to-have
|
||
|
||
---
|
||
|
||
## TOOL SPECIFICATIONS
|
||
|
||
---
|
||
|
||
## TOOL #1: GHOST PAGE BUILDER
|
||
|
||
**Task Number:** #70
|
||
**Priority Tier:** CRITICAL (Score: 45/50)
|
||
**Time Estimate:** 45-60 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 10/10 (directly unblocks Task #69 - 6 website pages)
|
||
- Team Impact: 8/10 (Michael builds pages, Meg/Holly use later)
|
||
- Time ROI: 10/10 (60 min build, saves hours on every future page)
|
||
- Foundation Value: 10/10 (permanent utility for all Ghost work)
|
||
- Dependency Chain: 7/10 (unblocks Task #69)
|
||
|
||
### Problem Statement
|
||
|
||
**Current workflow for creating Ghost pages:**
|
||
1. Write HTML in text editor
|
||
2. Paste into Ghost Admin
|
||
3. Click "Preview"
|
||
4. Notice styling issues
|
||
5. Edit HTML in text editor
|
||
6. Repeat steps 2-5 multiple times
|
||
|
||
**Pain point:** No live preview of how HTML will render with Fire/Frost CSS in Ghost context. Trial-and-error cycle wastes time and creates frustration.
|
||
|
||
### Solution Description
|
||
|
||
Interactive React tool with:
|
||
- **Live HTML editor** (left pane) with syntax highlighting
|
||
- **Live preview** (right pane) showing exactly how it renders in Ghost
|
||
- **Fire/Frost CSS applied** automatically (from site-wide head)
|
||
- **Mobile/Desktop toggle** to test responsive behavior
|
||
- **Dark navbar context** showing how page looks under actual Ghost navigation
|
||
- **Copy button** for final HTML (ready to paste into Ghost Admin)
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Code editor: `<textarea>` with monospace font (or CodeMirror for syntax highlighting)
|
||
- Split-pane layout: 50/50 editor/preview
|
||
- CSS: Inject Fire/Frost styles into preview iframe
|
||
- Viewport controls: Button toggles between desktop (1200px) and mobile (375px)
|
||
|
||
**Data Requirements:**
|
||
1. **Fire/Frost CSS** from `docs/planning/ideas/features/ghost-frost-css.css`
|
||
2. **Current site-wide head CSS** from Ghost (Settings → Design & branding → Site-wide head)
|
||
3. **Navbar HTML** (optional, for context preview)
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<GhostPageBuilder>
|
||
<EditorPane>
|
||
<Toolbar>
|
||
[Sample Templates ▼] [Viewport: Desktop ▼] [Copy HTML] [Reset]
|
||
</Toolbar>
|
||
<CodeEditor value={html} onChange={setHtml} />
|
||
</EditorPane>
|
||
|
||
<PreviewPane viewport={viewport}>
|
||
<PreviewNavbar /> {/* Dark navbar context */}
|
||
<PreviewIframe html={html} css={firefrostCSS} />
|
||
</PreviewPane>
|
||
</GhostPageBuilder>
|
||
```
|
||
|
||
**Key Features:**
|
||
- Auto-updates preview as you type (debounced 500ms)
|
||
- Viewport toggle buttons: Desktop (1200px) | Tablet (768px) | Mobile (375px)
|
||
- "Copy HTML" button with visual confirmation ("✓ Copied!")
|
||
- "Reset" button to clear editor
|
||
- Sample templates dropdown: Blank | Simple Page | Two Column | Card Grid
|
||
- localStorage persistence (save draft HTML between sessions)
|
||
- Fire/Frost color palette reference in sidebar
|
||
|
||
**User Flow:**
|
||
1. Open artifact in browser (bookmark this URL)
|
||
2. Paste or write HTML in left pane
|
||
3. See live Fire/Frost-styled preview in right pane
|
||
4. Toggle viewport to test mobile
|
||
5. Click "Copy HTML" when satisfied
|
||
6. Paste into Ghost Admin → Publish
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Tool loads in <3 seconds
|
||
- [ ] Preview updates within 500ms of typing
|
||
- [ ] Fire/Frost CSS renders correctly in preview
|
||
- [ ] Viewport toggle works smoothly
|
||
- [ ] Copy button successfully copies HTML to clipboard
|
||
- [ ] localStorage preserves draft between sessions
|
||
- [ ] Michael successfully builds at least 2 Ghost pages using this tool
|
||
|
||
### Related Tasks
|
||
|
||
- **Unblocks:** Task #69 (Ghost Website Core Pages)
|
||
- **Uses:** Fire/Frost CSS from Task #68 (Ghost Theme Migration)
|
||
- **Complements:** Task #52 (Ghost Homepage Content)
|
||
|
||
### Implementation Notes
|
||
|
||
- Load Fire/Frost CSS from committed file, not from Ghost directly (version control)
|
||
- Use iframe for preview to prevent CSS conflicts
|
||
- Include Fire/Frost color swatches as quick reference
|
||
- Consider adding "Export as .html file" option (bonus feature)
|
||
|
||
---
|
||
|
||
## TOOL #2: PAYMENTER TIER CONFIGURATION PREVIEW
|
||
|
||
**Task Number:** #71
|
||
**Priority Tier:** HIGH (Score: 32/50)
|
||
**Time Estimate:** 30-45 minutes
|
||
**Status:** BLOCKED (need feature matrix defined first)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 7/10 (billing config needed for soft launch)
|
||
- Team Impact: 7/10 (Michael configs, Meg/Holly understand tiers)
|
||
- Time ROI: 7/10 (45 min build, saves hours of tier tweaking)
|
||
- Foundation Value: 6/10 (reusable when tiers change)
|
||
- Dependency Chain: 5/10 (doesn't block other work, but billing setup blocks soft launch)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- 6 subscriber tiers defined (Awakened $1 → Founder $50)
|
||
- No clear feature differentiation documented
|
||
- Can't preview pricing table before configuring in Paymenter
|
||
- Risk of misaligned features or unclear value propositions
|
||
|
||
**Pain point:** No way to visualize tier structure before committing to Paymenter configuration. Hard to answer "what makes Knight tier worth $10 vs. Elemental at $5?"
|
||
|
||
### Solution Description
|
||
|
||
Interactive tier builder with:
|
||
- **6 tier cards** (names + prices editable)
|
||
- **Feature checklist** per tier (checkboxes for what's included)
|
||
- **Live pricing table preview** (Fire/Frost branded cards)
|
||
- **Comparison view** (side-by-side features across tiers)
|
||
- **Export options** (JSON for Paymenter, HTML for website, Markdown for docs)
|
||
- **Mobile preview** (stacked tier cards)
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Form inputs for tier configuration
|
||
- Live preview pricing cards (Fire/Frost gradient styling)
|
||
- Export buttons with copy-to-clipboard
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
tiers: [
|
||
{
|
||
name: "Awakened",
|
||
price: 1,
|
||
popular: false,
|
||
features: {
|
||
serverSlots: 1,
|
||
ramPerServer: "2GB",
|
||
storage: "10GB",
|
||
backups: false,
|
||
plugins: "basic",
|
||
support: "community",
|
||
priority: false,
|
||
customDomain: false,
|
||
votingWeight: "1x"
|
||
}
|
||
},
|
||
// ... 5 more tiers
|
||
]
|
||
}
|
||
```
|
||
|
||
**Feature Categories:**
|
||
|
||
1. **Server Resources**
|
||
- Number of server slots
|
||
- RAM per server
|
||
- Storage per server
|
||
- CPU cores/priority
|
||
|
||
2. **Features & Access**
|
||
- Plugin access level
|
||
- Mod pack access
|
||
- Backup frequency
|
||
- Snapshot rollback window
|
||
|
||
3. **Support & Perks**
|
||
- Support level
|
||
- Setup assistance
|
||
- Custom domain support
|
||
- Early access to features
|
||
- Vote weight in community decisions
|
||
|
||
4. **Branding & Customization**
|
||
- Server MOTD customization
|
||
- Custom join messages
|
||
- Logo on server list
|
||
- Dedicated IP
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<PaymenterTierConfig>
|
||
<TierEditor tiers={tiers} onChange={setTiers} />
|
||
|
||
<ViewToggle>
|
||
[Cards] [Comparison Table] [Mobile Preview]
|
||
</ViewToggle>
|
||
|
||
<LivePreview mode={viewMode}>
|
||
{mode === 'cards' && <TierCards tiers={tiers} />}
|
||
{mode === 'table' && <ComparisonTable tiers={tiers} />}
|
||
{mode === 'mobile' && <MobileTierCards tiers={tiers} />}
|
||
</LivePreview>
|
||
|
||
<ExportPanel>
|
||
[Export JSON] [Export HTML] [Export Markdown] [Export CSV]
|
||
</ExportPanel>
|
||
</PaymenterTierConfig>
|
||
```
|
||
|
||
**Key Features:**
|
||
- Drag-and-drop tier reordering
|
||
- "Popular" badge toggle for recommended tier
|
||
- Feature comparison matrix (all 6 tiers side-by-side)
|
||
- Price calculator (annual discount: 10% off if paid yearly)
|
||
- Export formats:
|
||
- JSON (Paymenter import)
|
||
- HTML (pricing page embed)
|
||
- Markdown (documentation)
|
||
- CSV (spreadsheet comparison)
|
||
- Fire/Frost gradient for "Popular" tier highlight
|
||
- Mobile: Stack cards vertically with swipe navigation
|
||
- Validation: Ensure higher tiers include all lower tier features
|
||
|
||
**User Flow:**
|
||
1. Open artifact
|
||
2. Pre-filled with 6 tier names + prices
|
||
3. Check/uncheck features per tier
|
||
4. See live preview of pricing cards
|
||
5. Toggle view: Cards | Comparison Table | Mobile Preview
|
||
6. Click export format
|
||
7. Copy output and use in Paymenter or website
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] All 6 tiers configurable
|
||
- [ ] Feature matrix complete (all categories defined)
|
||
- [ ] Live preview renders correctly with Fire/Frost styling
|
||
- [ ] All 4 export formats work
|
||
- [ ] JSON export imports cleanly into Paymenter
|
||
- [ ] Michael/Meg approve tier differentiation
|
||
|
||
### Blocker Resolution
|
||
|
||
**BLOCKER:** Feature matrix not yet defined
|
||
|
||
**To unblock:**
|
||
1. Michael/Meg/Holly 15-minute meeting
|
||
2. Define features per tier (what justifies each price point?)
|
||
3. Document in this spec
|
||
4. Then build tool
|
||
|
||
**Questions to answer:**
|
||
- What does Awakened ($1) get vs. Elemental ($5)?
|
||
- Why is Knight ($10) worth 2x Elemental?
|
||
- What makes Founder ($50) special?
|
||
|
||
### Related Tasks
|
||
|
||
- **Unblocks:** Paymenter configuration (not yet a task)
|
||
- **Complements:** Task #52 (Homepage - pricing section)
|
||
|
||
### Implementation Notes
|
||
|
||
- Save configuration to localStorage (persist between sessions)
|
||
- Include "Load Default" button (reset to Michael's initial tier definition)
|
||
- Consider adding "Annual Discount Calculator" (10% off yearly subscriptions)
|
||
- Fire/Frost gradient should highlight "recommended" tier
|
||
|
||
---
|
||
|
||
## TOOL #3: INFRASTRUCTURE HEALTH DASHBOARD
|
||
|
||
**Task Number:** #72
|
||
**Priority Tier:** MEDIUM (Score: 28/50)
|
||
**Time Estimate:** 60-90 minutes
|
||
**Status:** BLOCKED (need dependency mapping)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 3/10 (nice to have, not blocking)
|
||
- Team Impact: 7/10 (Michael uses daily, team reference tool)
|
||
- Time ROI: 6/10 (90 min build, saves 5-10 min/day on lookups)
|
||
- Foundation Value: 7/10 (encodes infrastructure knowledge)
|
||
- Dependency Chain: 5/10 (doesn't block/unblock work)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- 6 servers, ~20 services, complex dependencies
|
||
- Information scattered across:
|
||
- `docs/core/infrastructure-manifest.md` (static text)
|
||
- Session handoffs (point-in-time snapshots)
|
||
- Michael's mental model (not documented)
|
||
|
||
**Pain point:** "If TX1 goes down, what breaks?" requires reading multiple docs and inferring relationships. No single-view infrastructure map.
|
||
|
||
### Solution Description
|
||
|
||
Interactive dashboard with:
|
||
- **Visual server map** (6 cards representing each server)
|
||
- **Service inventory** per server (expandable lists)
|
||
- **Dependency visualization** (arrows showing X depends on Y)
|
||
- **Quick reference** (IPs, ports, login users, Cockpit links)
|
||
- **Impact analysis** ("If I restart Mailcow, Paymenter email breaks")
|
||
- **Search/filter** by service name, server, or dependency
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Server cards with expand/collapse
|
||
- SVG or HTML arrows for dependencies
|
||
- Filter/search bar
|
||
- Responsive grid layout
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
servers: [
|
||
{
|
||
id: "ghost-vps",
|
||
name: "Ghost VPS",
|
||
ip: "64.50.188.14",
|
||
location: "Chicago",
|
||
cockpit: "https://64.50.188.14:9090",
|
||
login: "architect",
|
||
purpose: "Public-facing CMS and wikis",
|
||
role: "public", // or "command", "billing", "game"
|
||
services: [
|
||
{
|
||
name: "Ghost CMS",
|
||
url: "https://firefrostgaming.com",
|
||
port: 2368,
|
||
critical: true,
|
||
dependsOn: [] // No external dependencies
|
||
},
|
||
{
|
||
name: "Wiki.js (Pokerole)",
|
||
url: "https://pokerole.firefrostgaming.com",
|
||
port: 3100,
|
||
critical: false,
|
||
dependsOn: []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
id: "billing-vps",
|
||
name: "Billing VPS",
|
||
ip: "38.68.14.188",
|
||
location: "Dallas",
|
||
cockpit: "https://38.68.14.188:9090",
|
||
login: "root",
|
||
purpose: "Billing and email infrastructure",
|
||
role: "billing",
|
||
services: [
|
||
{
|
||
name: "Paymenter",
|
||
port: 80,
|
||
critical: true,
|
||
dependsOn: [
|
||
{
|
||
server: "billing-vps",
|
||
service: "Mailcow",
|
||
reason: "SMTP for billing emails"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
name: "Mailcow",
|
||
ports: [25, 587, 993, 8080, 8443],
|
||
critical: true,
|
||
dependsOn: []
|
||
}
|
||
]
|
||
}
|
||
// ... 4 more servers
|
||
]
|
||
}
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<InfrastructureDashboard>
|
||
<SearchBar onSearch={setFilter} />
|
||
|
||
<ViewToggle>
|
||
[Grid View] [List View] [Dependency Graph]
|
||
</ViewToggle>
|
||
|
||
<ServerGrid>
|
||
<ServerCard server={server} onClick={toggleExpand}>
|
||
<ServerHeader>
|
||
<Name>{server.name}</Name>
|
||
<IP>{server.ip}</IP>
|
||
<CockpitLink href={server.cockpit} />
|
||
</ServerHeader>
|
||
|
||
{expanded && (
|
||
<ServiceList>
|
||
{server.services.map(service => (
|
||
<ServiceItem
|
||
service={service}
|
||
onClick={() => showImpactAnalysis(service)}
|
||
/>
|
||
))}
|
||
</ServiceList>
|
||
)}
|
||
</ServerCard>
|
||
</ServerGrid>
|
||
|
||
<ImpactPanel service={selected}>
|
||
<h3>Impact Analysis: {selected.name}</h3>
|
||
<p>If this service fails:</p>
|
||
<DependentList />
|
||
</ImpactPanel>
|
||
</InfrastructureDashboard>
|
||
```
|
||
|
||
**Key Features:**
|
||
|
||
1. **Server Cards:**
|
||
- Colored by role (Command: blue, Public: green, Billing: orange, Game: purple)
|
||
- Click to expand service list
|
||
- Cockpit quick-link button
|
||
- IP + login user displayed
|
||
- Status indicator (future: red/yellow/green from API)
|
||
|
||
2. **Dependency View:**
|
||
- Toggle "Show Dependencies" button
|
||
- Arrows from dependent service → dependency
|
||
- Hover arrow shows reason ("SMTP for billing emails")
|
||
- Color-coded: Critical (red), Important (orange), Optional (gray)
|
||
|
||
3. **Impact Analysis:**
|
||
- Click a service → highlights everything that depends on it
|
||
- "What breaks if this goes down?" panel
|
||
- Suggested recovery order
|
||
|
||
4. **Search/Filter:**
|
||
- Search by service name ("Mailcow")
|
||
- Filter by server
|
||
- Filter by critical/non-critical
|
||
|
||
**User Flow:**
|
||
1. Open artifact
|
||
2. See 6 server cards in grid
|
||
3. Click "Ghost VPS" → expands to show 4 services
|
||
4. Click "Show Dependencies" → arrows appear
|
||
5. Click "Mailcow" → highlights Paymenter (dependent)
|
||
6. See "If Mailcow fails: Paymenter email breaks, Plane notifications fail"
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] All 6 servers displayed with correct info
|
||
- [ ] All ~20 services listed
|
||
- [ ] Dependencies mapped accurately
|
||
- [ ] Impact analysis works correctly
|
||
- [ ] Search/filter functional
|
||
- [ ] Michael uses this at least weekly
|
||
|
||
### Blocker Resolution
|
||
|
||
**BLOCKER:** Service dependencies not fully mapped
|
||
|
||
**To unblock:**
|
||
1. Parse `infrastructure-manifest.md` for base data (15 min)
|
||
2. Map dependencies manually (15-20 min):
|
||
- Paymenter → Mailcow (SMTP)
|
||
- Plane → Mailcow (SMTP)
|
||
- Wings nodes → Panel (control)
|
||
- Ghost → (no dependencies)
|
||
- etc.
|
||
3. Document in JSON format
|
||
4. Then build tool
|
||
|
||
### Related Tasks
|
||
|
||
- **Uses:** Infrastructure manifest data
|
||
- **Complements:** Server health monitoring (future)
|
||
|
||
### Implementation Notes
|
||
|
||
- Parse `infrastructure-manifest.md` for initial data
|
||
- Dependency mapping requires manual work (not fully documented)
|
||
- Use localStorage to save collapsed/expanded states
|
||
- Future enhancement: Health status API integration (Cockpit API)
|
||
|
||
---
|
||
|
||
## TOOL #4: TASK DEPENDENCY VISUALIZER WITH GITEA INTEGRATION
|
||
|
||
**Task Number:** #73
|
||
**Priority Tier:** MEDIUM (Score: 27/50)
|
||
**Time Estimate:** 90-120 minutes (core) + 30-45 min (polish)
|
||
**Status:** BLOCKED (dependency mapping needed)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 5/10 (strategic planning, not blocking)
|
||
- Team Impact: 6/10 (Michael uses for planning, team sees in meetings)
|
||
- Time ROI: 5/10 (120 min build, saves 20-30 min/week in planning)
|
||
- Foundation Value: 7/10 (strategic decision support)
|
||
- Dependency Chain: 4/10 (doesn't block/unblock work)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- 69 tasks in `tasks.md` as linear list
|
||
- Hard to see which tasks block others
|
||
- Hard to identify critical path to soft launch
|
||
- Gitea project boards exist but lack dependency visualization
|
||
|
||
**Pain point:** "Why can't we do X yet?" and "What's the critical path to soft launch?" require reading entire tasks.md and mentally mapping dependencies.
|
||
|
||
### Solution Description
|
||
|
||
Interactive dependency graph that **COMPLEMENTS Gitea boards** (doesn't replace them):
|
||
|
||
**Hybrid Architecture:**
|
||
- tasks.md owns: Task definitions, dependencies, time estimates
|
||
- Gitea owns: Current status, assignments, team coordination
|
||
- Tool #4B owns: Visualization, critical path analysis
|
||
|
||
**Team uses Gitea for daily work. Michael uses Tool #4B for strategic planning. Both stay in sync via Gitea API.**
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- React Flow or D3.js for graph visualization
|
||
- Gitea API integration (fetch issues, read status/assignees)
|
||
- Task parser (reads tasks.md for dependencies)
|
||
|
||
**Data Flow:**
|
||
```
|
||
tasks.md (definitions, dependencies)
|
||
↓
|
||
Gitea API (status, assignees)
|
||
↓
|
||
Tool #4B (merge data, visualize)
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<TaskDependencyVisualizer>
|
||
<Sidebar>
|
||
<MetricsPanel>
|
||
Total: {metrics.total}
|
||
Complete: {metrics.complete}
|
||
Soft Launch: {metrics.softLaunchProgress}
|
||
</MetricsPanel>
|
||
|
||
<FilterPanel>
|
||
[ ] Show Soft Launch Critical Only
|
||
Status: [✓] Complete [✓] Ready [ ] Blocked
|
||
Area: [✓] Website [ ] Infrastructure
|
||
</FilterPanel>
|
||
|
||
<RefreshButton onClick={loadData}>
|
||
🔄 Refresh (auto every 30s)
|
||
</RefreshButton>
|
||
</Sidebar>
|
||
|
||
<ReactFlow
|
||
nodes={nodes}
|
||
edges={edges}
|
||
onNodeClick={showDetails}
|
||
>
|
||
<Background />
|
||
<Controls />
|
||
</ReactFlow>
|
||
|
||
<DetailPanel task={selected}>
|
||
<TaskHeader>#{task.id}: {task.title}</TaskHeader>
|
||
<Status>{task.status}</Status>
|
||
<Assignee>{task.assignee}</Assignee>
|
||
<TimeEstimate>{task.timeEstimate}</TimeEstimate>
|
||
<GiteaLink href={task.giteaUrl}>View in Gitea →</GiteaLink>
|
||
</DetailPanel>
|
||
</TaskDependencyVisualizer>
|
||
```
|
||
|
||
**Key Features:**
|
||
|
||
1. **Visual Graph:**
|
||
- Each task = node (colored by status)
|
||
- Arrows show dependencies
|
||
- Size indicates priority
|
||
- Layout: Top-to-bottom (earlier → later tasks)
|
||
|
||
2. **Interactivity:**
|
||
- Click task → detail panel
|
||
- Hover task → highlights dependencies
|
||
- Drag to pan/zoom
|
||
- Double-click → open task README
|
||
|
||
3. **Critical Path Mode:**
|
||
- Toggle "Show Soft Launch Path Only"
|
||
- Dims non-critical tasks
|
||
- Highlights path from current → soft launch complete
|
||
- Shows estimated remaining time
|
||
|
||
4. **Live Status from Gitea:**
|
||
- Auto-refresh every 30 seconds
|
||
- Fetches issue status/assignees from Gitea API
|
||
- Merges with tasks.md dependencies
|
||
- No manual sync needed
|
||
|
||
**Gitea API Integration:**
|
||
```javascript
|
||
async function fetchGiteaIssues() {
|
||
const response = await fetch(
|
||
'https://git.firefrostgaming.com/api/v1/repos/firefrost-gaming/firefrost-operations-manual/issues?state=all&limit=100',
|
||
{
|
||
headers: {
|
||
'Authorization': 'token e0e330cba1749b01ab505093a160e4423ebbbe36'
|
||
}
|
||
}
|
||
);
|
||
|
||
const issues = await response.json();
|
||
return issues;
|
||
}
|
||
|
||
function mapIssuesToTasks(issues, tasksFromMd) {
|
||
// Extract task number from issue title: "Task #70: ..." → 70
|
||
// Match issue to task, merge status/assignee data
|
||
// Return enriched task list
|
||
}
|
||
```
|
||
|
||
**User Flow:**
|
||
1. Open tool
|
||
2. See full task graph (initially shows all 69 tasks)
|
||
3. Click "Show Soft Launch Critical Only"
|
||
4. Graph simplifies to critical path
|
||
5. See Task #69 is "Ready" (yellow node)
|
||
6. Click Task #69 → detail panel
|
||
7. See dependencies, assignee, Gitea link
|
||
8. Click "View in Gitea" → opens issue
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Tool loads all 69 tasks correctly
|
||
- [ ] Gitea API integration works (fetches status/assignees)
|
||
- [ ] Dependency arrows accurate
|
||
- [ ] Critical path filter works
|
||
- [ ] Auto-refresh updates status every 30s
|
||
- [ ] Michael finds it useful for weekly planning
|
||
|
||
### Blocker Resolution
|
||
|
||
**BLOCKER:** Task dependencies not fully mapped in tasks.md
|
||
|
||
**To unblock:**
|
||
1. **Option A:** Full dependency mapping (2-3 hours manual work)
|
||
2. **Option B:** Simplified model (just soft-launch-critical flag)
|
||
3. **Option C:** Infer from task descriptions (AI parsing)
|
||
|
||
**Recommendation:** Start with Option B (simplified), expand later
|
||
|
||
### Related Tasks
|
||
|
||
- **Complements:** Gitea project boards (doesn't replace)
|
||
- **Uses:** tasks.md task definitions
|
||
- **Integrates:** Gitea API for live status
|
||
|
||
### Implementation Notes
|
||
|
||
- Gitea API auth: Use existing admin token
|
||
- Cache responses in localStorage (5-min TTL)
|
||
- Validate issue title format: "Task #XX:" (warn if mismatched)
|
||
- Dependencies live in tasks.md only (not duplicated in Gitea)
|
||
|
||
---
|
||
|
||
## TOOL #5: SSH KEY AUTO-SETUP SCRIPT
|
||
|
||
**Task Number:** #74
|
||
**Priority Tier:** MEDIUM (Score: 24/50)
|
||
**Time Estimate:** 15-20 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 2/10 (convenience, not blocking)
|
||
- Team Impact: 4/10 (only Chroniclers benefit)
|
||
- Time ROI: 8/10 (20 min build, saves 5 min every session)
|
||
- Foundation Value: 6/10 (improves Chronicler onboarding)
|
||
- Dependency Chain: 4/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- Every new Claude session = fresh environment
|
||
- Chroniclers must manually copy SSH key from repo
|
||
- Set permissions (`chmod 600`)
|
||
- Test connection to verify
|
||
- 5+ minutes per session
|
||
|
||
**Pain point:** Repetitive manual setup at start of every session.
|
||
|
||
### Solution Description
|
||
|
||
Bash script that Chroniclers run at session start:
|
||
```bash
|
||
./setup-ssh-keys.sh
|
||
```
|
||
|
||
Script does:
|
||
1. Checks if SSH key already set up (skip if present)
|
||
2. Copies SSH key from ops manual to `~/.ssh/`
|
||
3. Sets correct permissions (`chmod 600`)
|
||
4. Tests connection to one server
|
||
5. Reports success/failure
|
||
|
||
### Technical Specifications
|
||
|
||
**File:** `scripts/setup-ssh-keys.sh`
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# SSH Key Auto-Setup for Chroniclers
|
||
# Run this at session start to configure SSH access to all 6 servers
|
||
|
||
set -e # Exit on error
|
||
|
||
echo "🔑 Firefrost SSH Key Setup"
|
||
echo "======================================"
|
||
|
||
# Check if key already exists
|
||
if [ -f ~/.ssh/firefrost_key ]; then
|
||
echo "✓ SSH key already configured"
|
||
exit 0
|
||
fi
|
||
|
||
# Ensure .ssh directory exists
|
||
mkdir -p ~/.ssh
|
||
chmod 700 ~/.ssh
|
||
|
||
# Copy key from operations manual
|
||
echo "📋 Copying SSH key from repository..."
|
||
cp /home/claude/firefrost-operations-manual/credentials/ssh-keys/firefrost_key ~/.ssh/
|
||
chmod 600 ~/.ssh/firefrost_key
|
||
|
||
# Test connection to Ghost VPS
|
||
echo "🧪 Testing SSH connection to Ghost VPS..."
|
||
if ssh -i ~/.ssh/firefrost_key -o StrictHostKeyChecking=no -o ConnectTimeout=5 architect@64.50.188.14 "echo 'Connection successful'" 2>/dev/null; then
|
||
echo "✅ SSH key configured successfully!"
|
||
echo ""
|
||
echo "You can now connect to servers:"
|
||
echo " ssh -i ~/.ssh/firefrost_key architect@64.50.188.14 # Ghost VPS"
|
||
echo " ssh -i ~/.ssh/firefrost_key root@38.68.14.188 # Billing VPS"
|
||
echo " ssh -i ~/.ssh/firefrost_key root@45.94.168.138 # Panel VPS"
|
||
echo " ssh -i ~/.ssh/firefrost_key root@63.143.34.217 # Command Center"
|
||
echo " ssh -i ~/.ssh/firefrost_key root@38.68.14.26 # TX1 Dallas"
|
||
echo " ssh -i ~/.ssh/firefrost_key root@216.239.104.130 # NC1 Charlotte"
|
||
else
|
||
echo "⚠️ SSH key configured but connection test failed"
|
||
echo "This may be due to network restrictions in Claude sessions"
|
||
echo "Key is ready to use if network access is available"
|
||
fi
|
||
```
|
||
|
||
**Usage:**
|
||
```bash
|
||
cd /home/claude/firefrost-operations-manual
|
||
bash scripts/setup-ssh-keys.sh
|
||
```
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Script runs without errors
|
||
- [ ] SSH key copied to correct location
|
||
- [ ] Permissions set correctly (600)
|
||
- [ ] Connection test works (if network allows)
|
||
- [ ] Idempotent (can run multiple times safely)
|
||
- [ ] Chroniclers use this every session
|
||
|
||
### Related Tasks
|
||
|
||
- **Uses:** SSH key from Task #14
|
||
- **Helps:** All Chronicler sessions
|
||
|
||
### Implementation Notes
|
||
|
||
- Make script idempotent (check if already configured)
|
||
- Network restrictions may prevent SSH in Claude sessions (document this)
|
||
- Include helpful error messages
|
||
- Add to session start checklist
|
||
|
||
---
|
||
|
||
## TOOL #6: GEMINI CONSULTATION HELPER
|
||
|
||
**Task Number:** #75
|
||
**Priority Tier:** MEDIUM (Score: 23/50)
|
||
**Time Estimate:** 20-30 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 2/10 (workflow optimization, not blocking)
|
||
- Team Impact: 5/10 (Michael + Chroniclers benefit)
|
||
- Time ROI: 7/10 (30 min build, saves time on every consultation)
|
||
- Foundation Value: 5/10 (improves consultation pattern)
|
||
- Dependency Chain: 4/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current workflow when consulting Gemini:**
|
||
1. Claude identifies need for Gemini expertise
|
||
2. Claude drafts consultation prompt
|
||
3. Michael copies prompt to separate window
|
||
4. Michael pastes in Gemini
|
||
5. Michael copies Gemini response
|
||
6. Michael pastes back to Claude
|
||
7. Claude integrates response
|
||
|
||
**Pain point:** Context-switching and manual copy/paste steps.
|
||
|
||
### Solution Description
|
||
|
||
Simple React form that:
|
||
- Claude fills in consultation details
|
||
- Generates formatted prompt
|
||
- One-click copy for Michael to paste in Gemini
|
||
- Text area for pasting Gemini's response
|
||
- Logs consultation for documentation
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Form inputs for consultation details
|
||
- Copy-to-clipboard buttons
|
||
- LocalStorage for consultation history
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<GeminiConsultationHelper>
|
||
<ConsultationForm>
|
||
<Input label="Topic" value={topic} onChange={setTopic} />
|
||
<TextArea label="Context" value={context} onChange={setContext} />
|
||
<TextArea label="Code Samples" value={code} onChange={setCode} />
|
||
<TextArea label="Our Theories" value={theories} onChange={setTheories} />
|
||
<TextArea label="Specific Questions" value={questions} onChange={setQuestions} />
|
||
</ConsultationForm>
|
||
|
||
<GeneratedPrompt>
|
||
<h3>Prompt for Gemini</h3>
|
||
<CodeBlock>{formatPrompt()}</CodeBlock>
|
||
<CopyButton onClick={copyPrompt}>Copy Prompt</CopyButton>
|
||
</GeneratedPrompt>
|
||
|
||
<ResponseArea>
|
||
<h3>Paste Gemini's Response</h3>
|
||
<TextArea value={response} onChange={setResponse} />
|
||
<SaveButton onClick={saveConsultation}>Save Consultation</SaveButton>
|
||
</ResponseArea>
|
||
|
||
<ConsultationHistory>
|
||
{history.map(c => (
|
||
<ConsultationCard consultation={c} />
|
||
))}
|
||
</ConsultationHistory>
|
||
</GeminiConsultationHelper>
|
||
```
|
||
|
||
**Generated Prompt Format:**
|
||
```
|
||
# Gemini Consultation Request
|
||
|
||
## Context
|
||
[Context from form]
|
||
|
||
## Current Situation
|
||
[Code samples]
|
||
|
||
## Our Theories
|
||
[Theories from form]
|
||
|
||
## Questions
|
||
[Specific questions]
|
||
|
||
## Technical Environment
|
||
- Firefrost Gaming infrastructure
|
||
- [Relevant system details]
|
||
|
||
Please provide your expert analysis and recommendations.
|
||
```
|
||
|
||
**Key Features:**
|
||
- Auto-formats consultation prompt
|
||
- Copy button with confirmation
|
||
- Response text area
|
||
- Save consultation to localStorage
|
||
- Export consultation as markdown (for documentation)
|
||
- Consultation history (last 10)
|
||
|
||
**User Flow:**
|
||
1. Claude: "I need Gemini's help with Ghost CMS issue"
|
||
2. Claude fills in form (topic, context, code, theories, questions)
|
||
3. Tool generates formatted prompt
|
||
4. Michael clicks "Copy Prompt"
|
||
5. Michael pastes in Gemini
|
||
6. Gemini responds
|
||
7. Michael copies response
|
||
8. Michael pastes in "Response Area"
|
||
9. Tool saves consultation
|
||
10. Claude integrates Gemini's recommendations
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Form generates well-formatted prompts
|
||
- [ ] Copy button works reliably
|
||
- [ ] Consultation history persists
|
||
- [ ] Export as markdown works
|
||
- [ ] Used at least 3 times in practice
|
||
|
||
### Related Tasks
|
||
|
||
- **Supports:** All tasks where Gemini consultation needed
|
||
- **Documents:** The Translator's Gemini collaboration pattern
|
||
|
||
### Implementation Notes
|
||
|
||
- Keep form simple (5 fields max)
|
||
- Include "Template" dropdown (Ghost CMS, Infrastructure, Coding, etc.)
|
||
- Save to localStorage with timestamps
|
||
- Export includes both prompt and response
|
||
|
||
---
|
||
|
||
## TOOL #7: SOCIAL MEDIA CONTENT CALENDAR
|
||
|
||
**Task Number:** #76
|
||
**Priority Tier:** MEDIUM (Score: 26/50)
|
||
**Time Estimate:** 45-60 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 5/10 (social presence helps soft launch)
|
||
- Team Impact: 8/10 (Meg primary user, Holly contributes)
|
||
- Time ROI: 6/10 (60 min build, saves hours in planning)
|
||
- Foundation Value: 4/10 (reusable for ongoing social work)
|
||
- Dependency Chain: 3/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- The Translator created social media setup guide
|
||
- 8 platforms to manage (Twitter, Instagram, TikTok, Facebook, YouTube, Twitch, Reddit, BlueSky)
|
||
- No content planning tool
|
||
- Meg needs to plan posts across all platforms
|
||
|
||
**Pain point:** No structured way to plan content calendar. Risk of sporadic posting or platform neglect.
|
||
|
||
### Solution Description
|
||
|
||
Interactive content calendar with:
|
||
- Week-at-a-glance view
|
||
- Platform checkboxes per post
|
||
- Fire/Frost themed post ideas
|
||
- Export to CSV or print-friendly format
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Calendar grid component
|
||
- Platform icons/checkboxes
|
||
- Export functionality
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
posts: [
|
||
{
|
||
id: 1,
|
||
date: "2026-03-25",
|
||
time: "10:00 AM",
|
||
content: "Server launch announcement: ATM10 To The Sky now live!",
|
||
platforms: ["twitter", "instagram", "tiktok"],
|
||
status: "scheduled", // draft | scheduled | posted
|
||
image: null, // optional image URL
|
||
fireOrFrost: "fire" // fire | frost | both
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<SocialMediaCalendar>
|
||
<WeekView startDate={currentWeek}>
|
||
{daysOfWeek.map(day => (
|
||
<DayColumn date={day}>
|
||
{postsForDay(day).map(post => (
|
||
<PostCard post={post} onClick={editPost} />
|
||
))}
|
||
<AddPostButton onClick={createPost} />
|
||
</DayColumn>
|
||
))}
|
||
</WeekView>
|
||
|
||
<PostEditor post={editing}>
|
||
<TextArea value={post.content} onChange={setContent} />
|
||
|
||
<PlatformSelector>
|
||
{platforms.map(p => (
|
||
<Checkbox label={p} checked={selected.includes(p)} />
|
||
))}
|
||
</PlatformSelector>
|
||
|
||
<ThemeSelector>
|
||
[🔥 Fire] [❄️ Frost] [💙 Both]
|
||
</ThemeSelector>
|
||
|
||
<SaveButton onClick={savePost}>Save Post</SaveButton>
|
||
</PostEditor>
|
||
|
||
<ExportPanel>
|
||
[Export CSV] [Print View] [Copy Week to Clipboard]
|
||
</ExportPanel>
|
||
</SocialMediaCalendar>
|
||
```
|
||
|
||
**Platforms:**
|
||
- Twitter/X
|
||
- Instagram
|
||
- TikTok
|
||
- Facebook
|
||
- YouTube
|
||
- Twitch
|
||
- Reddit
|
||
- BlueSky
|
||
|
||
**Post Ideas (Fire/Frost Themed):**
|
||
- **Fire posts:** Community stories, player highlights, events, celebrations
|
||
- **Frost posts:** Technical updates, server specs, optimization tips, statistics
|
||
- **Both:** Server launches, major announcements, founder messages
|
||
|
||
**Key Features:**
|
||
- Week navigation (< Previous Week | Next Week >)
|
||
- Drag-and-drop posts between days
|
||
- Platform icons (visual checkboxes)
|
||
- Fire/Frost color coding
|
||
- Post status (draft, scheduled, posted)
|
||
- Export to CSV (import to scheduling tools)
|
||
- Print-friendly view
|
||
|
||
**User Flow:**
|
||
1. Meg opens calendar
|
||
2. Sees current week
|
||
3. Clicks "Add Post" on Tuesday
|
||
4. Writes content: "New ATM10 server live!"
|
||
5. Checks platforms: Twitter, Instagram, TikTok
|
||
6. Selects theme: Fire
|
||
7. Saves post
|
||
8. Repeats for week
|
||
9. Exports to CSV
|
||
10. Imports to Buffer/Hootsuite (if using)
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Calendar displays current week correctly
|
||
- [ ] Posts can be created/edited
|
||
- [ ] Platform checkboxes work
|
||
- [ ] Export to CSV works
|
||
- [ ] Meg uses this for at least 2 weeks of planning
|
||
|
||
### Related Tasks
|
||
|
||
- **Uses:** Social media platforms from Translator's guide
|
||
- **Complements:** Social media account setup
|
||
|
||
### Implementation Notes
|
||
|
||
- Save to localStorage (persist between sessions)
|
||
- Include "Post Ideas" sidebar (Fire/Frost themed suggestions)
|
||
- Color-code by Fire/Frost theme
|
||
- Consider adding "Best Times to Post" hints per platform
|
||
|
||
---
|
||
|
||
## TOOL #8: COMMUNITY RESPONSE TEMPLATE LIBRARY
|
||
|
||
**Task Number:** #77
|
||
**Priority Tier:** MEDIUM (Score: 25/50)
|
||
**Time Estimate:** 30-45 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 4/10 (good community management)
|
||
- Team Impact: 7/10 (Meg primary user)
|
||
- Time ROI: 7/10 (45 min build, saves hours over time)
|
||
- Foundation Value: 4/10 (reusable for ongoing community work)
|
||
- Dependency Chain: 3/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- Common questions: "How do I join?" "What's the server IP?" "How do I install the modpack?"
|
||
- Meg has to type or paste responses manually
|
||
- Risk of inconsistent messaging
|
||
|
||
**Pain point:** Repetitive typing of similar responses.
|
||
|
||
### Solution Description
|
||
|
||
Template library with:
|
||
- Categorized responses (Onboarding, Technical Support, Community Rules)
|
||
- Click to copy
|
||
- Fire/Frost branded
|
||
- Easy to update
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Template cards with copy buttons
|
||
- Search/filter
|
||
- Template editor (add custom)
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
templates: [
|
||
{
|
||
id: 1,
|
||
category: "Onboarding",
|
||
title: "How to Join",
|
||
content: "Welcome to Firefrost Gaming! Here's how to get started:\n\n1. Join our Discord: [link]\n2. Read the rules in #welcome\n3. Request whitelist in #whitelist-requests\n4. Download the modpack: [link]\n5. Connect to [server-ip]\n\nSee you in-game! 🔥❄️",
|
||
tags: ["join", "new player", "whitelist"]
|
||
},
|
||
{
|
||
id: 2,
|
||
category: "Technical Support",
|
||
title: "Modpack Installation",
|
||
content: "To install the modpack:\n\n1. Download CurseForge launcher: [link]\n2. Search for 'Firefrost ATM10'\n3. Click 'Install'\n4. Launch and enjoy!\n\nNeed help? Ask in #tech-support 💙",
|
||
tags: ["modpack", "install", "technical"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<ResponseTemplateLibrary>
|
||
<Sidebar>
|
||
<SearchBar onSearch={setFilter} />
|
||
|
||
<CategoryFilter>
|
||
[All] [Onboarding] [Technical] [Rules] [FAQ]
|
||
</CategoryFilter>
|
||
|
||
<AddTemplateButton onClick={createTemplate}>
|
||
+ New Template
|
||
</AddTemplateButton>
|
||
</Sidebar>
|
||
|
||
<TemplateGrid>
|
||
{filteredTemplates.map(t => (
|
||
<TemplateCard template={t}>
|
||
<Title>{t.title}</Title>
|
||
<Preview>{truncate(t.content, 100)}</Preview>
|
||
<Actions>
|
||
<CopyButton onClick={copyContent}>Copy</CopyButton>
|
||
<EditButton onClick={editTemplate}>Edit</EditButton>
|
||
</Actions>
|
||
</TemplateCard>
|
||
))}
|
||
</TemplateGrid>
|
||
|
||
<TemplateEditor template={editing}>
|
||
<Input label="Title" value={title} />
|
||
<Select label="Category" value={category} />
|
||
<TextArea label="Content" value={content} />
|
||
<TagInput label="Tags" value={tags} />
|
||
<SaveButton onClick={saveTemplate}>Save</SaveButton>
|
||
</TemplateEditor>
|
||
</ResponseTemplateLibrary>
|
||
```
|
||
|
||
**Template Categories:**
|
||
1. **Onboarding** - Welcome, how to join, getting started
|
||
2. **Technical Support** - Modpack install, connection issues, troubleshooting
|
||
3. **Community Rules** - Rules reminders, conduct expectations
|
||
4. **FAQ** - Common questions
|
||
5. **Events** - Event announcements, event rules
|
||
6. **Custom** - Meg's custom templates
|
||
|
||
**Pre-Built Templates (Examples):**
|
||
- How to Join
|
||
- Whitelist Request Process
|
||
- Modpack Installation (CurseForge)
|
||
- Modpack Installation (Prism Launcher)
|
||
- Server IP and Connection
|
||
- Discord Rules
|
||
- Reporting Issues
|
||
- Subscription Tiers
|
||
- Fire vs Frost Philosophy
|
||
|
||
**Key Features:**
|
||
- Copy button with confirmation ("✓ Copied!")
|
||
- Search by title/content/tags
|
||
- Filter by category
|
||
- Edit/delete templates
|
||
- Add new custom templates
|
||
- Export/import templates (JSON)
|
||
- Fire/Frost themed styling
|
||
|
||
**User Flow:**
|
||
1. Player asks: "How do I join?"
|
||
2. Meg opens template library
|
||
3. Searches "join"
|
||
4. Clicks "How to Join" template
|
||
5. Clicks "Copy"
|
||
6. Pastes in Discord
|
||
7. Adds personal touch if needed
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] 10+ pre-built templates
|
||
- [ ] Copy button works reliably
|
||
- [ ] Search/filter functional
|
||
- [ ] Meg can add custom templates
|
||
- [ ] Used at least 5 times in first week
|
||
|
||
### Related Tasks
|
||
|
||
- **Supports:** Community management work
|
||
- **Complements:** Discord moderation
|
||
|
||
### Implementation Notes
|
||
|
||
- Save to localStorage (persist custom templates)
|
||
- Include Fire/Frost personality in templates ("Welcome to the realm! 🔥❄️")
|
||
- Add "[link]" placeholders that Meg replaces with actual URLs
|
||
- Consider adding "Recently Used" section
|
||
|
||
---
|
||
|
||
## TOOL #9: FIRE/FROST DESIGN SYSTEM WIDGET
|
||
|
||
**Task Number:** #78
|
||
**Priority Tier:** HIGH (Score: 31/50)
|
||
**Time Estimate:** 30-45 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 6/10 (brand consistency important for launch)
|
||
- Team Impact: 9/10 (Meg, Holly, Michael all use)
|
||
- Time ROI: 7/10 (45 min build, saves time on every design decision)
|
||
- Foundation Value: 6/10 (permanent brand reference)
|
||
- Dependency Chain: 3/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- Fire colors, Frost colors, gradients scattered across docs
|
||
- Designers need quick reference
|
||
- Inconsistent color usage across platforms
|
||
|
||
**Pain point:** "What's the exact Fire orange hex code?" requires digging through documentation.
|
||
|
||
### Solution Description
|
||
|
||
Interactive design system reference with:
|
||
- Fire/Frost color swatches with hex codes
|
||
- Click to copy hex
|
||
- Gradient previews
|
||
- Typography samples
|
||
- Logo download links
|
||
- Brand guidelines summary
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Color swatches with copy-to-clipboard
|
||
- Gradient visualizations
|
||
- Typography examples
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
colors: {
|
||
fire: {
|
||
primary: "#FF6B35",
|
||
secondary: "#F7931E",
|
||
accent: "#FFA500",
|
||
text: "#FFFFFF"
|
||
},
|
||
frost: {
|
||
primary: "#4ECDC4",
|
||
secondary: "#45B7D1",
|
||
accent: "#00CED1",
|
||
text: "#FFFFFF"
|
||
},
|
||
neutral: {
|
||
dark: "#1a1a1a",
|
||
gray: "#6b7280",
|
||
light: "#f3f4f6",
|
||
white: "#ffffff"
|
||
}
|
||
},
|
||
gradients: {
|
||
fireFrost: "linear-gradient(135deg, #FF6B35 0%, #4ECDC4 100%)",
|
||
fireOnly: "linear-gradient(135deg, #FF6B35 0%, #FFA500 100%)",
|
||
frostOnly: "linear-gradient(135deg, #4ECDC4 0%, #00CED1 100%)"
|
||
},
|
||
typography: {
|
||
headings: "Inter, system-ui, sans-serif",
|
||
body: "Inter, system-ui, sans-serif",
|
||
mono: "JetBrains Mono, monospace"
|
||
}
|
||
}
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<FireFrostDesignSystem>
|
||
<Section title="Colors">
|
||
<ColorPalette name="Fire" colors={colors.fire} />
|
||
<ColorPalette name="Frost" colors={colors.frost} />
|
||
<ColorPalette name="Neutral" colors={colors.neutral} />
|
||
</Section>
|
||
|
||
<Section title="Gradients">
|
||
<GradientSwatch gradient={gradients.fireFrost} name="Fire + Frost" />
|
||
<GradientSwatch gradient={gradients.fireOnly} name="Fire Only" />
|
||
<GradientSwatch gradient={gradients.frostOnly} name="Frost Only" />
|
||
</Section>
|
||
|
||
<Section title="Typography">
|
||
<TypeSample font="headings" text="The quick brown fox" />
|
||
<TypeSample font="body" text="Body text sample" />
|
||
<TypeSample font="mono" text="console.log('code')" />
|
||
</Section>
|
||
|
||
<Section title="Logos">
|
||
<LogoDownload variant="full-color" />
|
||
<LogoDownload variant="monochrome" />
|
||
<LogoDownload variant="icon-only" />
|
||
</Section>
|
||
|
||
<Section title="Brand Guidelines">
|
||
<Guideline>Fire = Passion, Community, Warmth</Guideline>
|
||
<Guideline>Frost = Precision, Technical, Cool</Guideline>
|
||
<Guideline>Balance both in all communications</Guideline>
|
||
</Section>
|
||
</FireFrostDesignSystem>
|
||
```
|
||
|
||
**Key Features:**
|
||
|
||
1. **Color Swatches:**
|
||
- Large color squares
|
||
- Hex code displayed
|
||
- Click swatch → copy hex code
|
||
- Confirmation message ("✓ Copied #FF6B35")
|
||
|
||
2. **Gradient Previews:**
|
||
- Visual gradient samples
|
||
- CSS gradient code displayed
|
||
- Click to copy CSS
|
||
|
||
3. **Typography Samples:**
|
||
- Headings in actual heading font
|
||
- Body text in actual body font
|
||
- Monospace code samples
|
||
- Font stack displayed
|
||
|
||
4. **Logo Assets:**
|
||
- Preview of each logo variant
|
||
- Download buttons (SVG, PNG)
|
||
- Usage guidelines (minimum size, clear space)
|
||
|
||
5. **Brand Voice:**
|
||
- Fire personality traits
|
||
- Frost personality traits
|
||
- Examples of Fire/Frost messaging
|
||
|
||
**User Flow:**
|
||
1. Holly needs Fire orange for banner
|
||
2. Opens design system widget
|
||
3. Clicks Fire primary color swatch
|
||
4. Hex code copied: #FF6B35
|
||
5. Pastes in design tool
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] All Fire/Frost colors accurate
|
||
- [ ] Copy-to-clipboard works
|
||
- [ ] Gradients render correctly
|
||
- [ ] Logo downloads work
|
||
- [ ] Team uses this at least weekly
|
||
|
||
### Related Tasks
|
||
|
||
- **Uses:** Design Bible colors/guidelines
|
||
- **Supports:** All design/content work
|
||
|
||
### Implementation Notes
|
||
|
||
- Extract colors from `docs/planning/design-bible.md`
|
||
- Include RGB and HSL values (not just hex)
|
||
- Add accessibility notes (contrast ratios)
|
||
- Consider adding "Usage Examples" (good/bad examples)
|
||
|
||
---
|
||
|
||
## TOOL #10: INFRASTRUCTURE QUICK REFERENCE CARD
|
||
|
||
**Task Number:** #79
|
||
**Priority Tier:** HIGH (Score: 30/50)
|
||
**Time Estimate:** 30-45 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 5/10 (convenience, not blocking)
|
||
- Team Impact: 9/10 (Michael, Chroniclers, team all use)
|
||
- Time ROI: 7/10 (45 min build, saves time on every lookup)
|
||
- Foundation Value: 6/10 (permanent reference)
|
||
- Dependency Chain: 3/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current situation:**
|
||
- "What's the Ghost VPS IP?" "What port is Plane on?"
|
||
- Info buried in `infrastructure-manifest.md`
|
||
- Have to search/grep to find details
|
||
|
||
**Pain point:** Frequent lookups of basic infrastructure info.
|
||
|
||
### Solution Description
|
||
|
||
Quick reference card with:
|
||
- Search by service name or server
|
||
- Shows: IP, port, login user, Cockpit link
|
||
- Click to copy IP/port
|
||
- Mobile-friendly
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Search/filter
|
||
- Copy-to-clipboard buttons
|
||
- Responsive grid
|
||
|
||
**Data Model:**
|
||
```javascript
|
||
{
|
||
servers: [
|
||
{
|
||
name: "Ghost VPS",
|
||
ip: "64.50.188.14",
|
||
location: "Chicago",
|
||
login: "architect",
|
||
cockpit: "https://64.50.188.14:9090",
|
||
services: [
|
||
{ name: "Ghost CMS", port: 2368, url: "https://firefrostgaming.com" },
|
||
{ name: "Wiki.js (Pokerole)", port: 3100, url: "https://pokerole.firefrostgaming.com" }
|
||
]
|
||
}
|
||
// ... 5 more servers
|
||
]
|
||
}
|
||
```
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<InfrastructureQuickRef>
|
||
<SearchBar
|
||
placeholder="Search servers or services..."
|
||
onChange={setFilter}
|
||
/>
|
||
|
||
<ServerGrid>
|
||
{filteredServers.map(server => (
|
||
<ServerCard server={server}>
|
||
<Header>
|
||
<Name>{server.name}</Name>
|
||
<Location>{server.location}</Location>
|
||
</Header>
|
||
|
||
<Details>
|
||
<IPField>
|
||
{server.ip}
|
||
<CopyButton onClick={copyIP} />
|
||
</IPField>
|
||
|
||
<LoginField>
|
||
Login as: {server.login}
|
||
</LoginField>
|
||
|
||
<CockpitLink href={server.cockpit}>
|
||
🖥️ Cockpit
|
||
</CockpitLink>
|
||
</Details>
|
||
|
||
<ServiceList>
|
||
{server.services.map(service => (
|
||
<ServiceItem>
|
||
<ServiceName>{service.name}</ServiceName>
|
||
<PortBadge>:{service.port}</PortBadge>
|
||
{service.url && <Link href={service.url}>🔗</Link>}
|
||
</ServiceItem>
|
||
))}
|
||
</ServiceList>
|
||
</ServerCard>
|
||
))}
|
||
</ServerGrid>
|
||
</InfrastructureQuickRef>
|
||
```
|
||
|
||
**Key Features:**
|
||
- Live search (filters as you type)
|
||
- Copy IP button (one click)
|
||
- Copy port button (one click)
|
||
- Cockpit quick-link
|
||
- Service URLs clickable
|
||
- Color-coded by server role
|
||
- Mobile responsive
|
||
|
||
**Data to Include:**
|
||
|
||
**Command Center (63.143.34.217):**
|
||
- Gitea (port 3000)
|
||
- Uptime Kuma (port 3001)
|
||
- Code-Server (port 8080)
|
||
- Vaultwarden (port 8000)
|
||
|
||
**Ghost VPS (64.50.188.14):**
|
||
- Ghost CMS (port 2368)
|
||
- Wiki.js Pokerole (port 3100)
|
||
- Wiki.js Internal (port 3101)
|
||
- Wiki.js Public (port 3102)
|
||
- Nextcloud (port 8080)
|
||
|
||
**Billing VPS (38.68.14.188):**
|
||
- Paymenter (port 80)
|
||
- Mailcow (ports 8080, 8443, 25, 587, 993)
|
||
|
||
**Panel VPS (45.94.168.138):**
|
||
- Pterodactyl Panel (port 80)
|
||
|
||
**TX1 Dallas (38.68.14.26):**
|
||
- Pterodactyl Wings (port 8080)
|
||
- Plane (port 8090)
|
||
- Dify (Firefrost Codex) (port 3000)
|
||
|
||
**NC1 Charlotte (216.239.104.130):**
|
||
- Pterodactyl Wings (port 8080)
|
||
|
||
**User Flow:**
|
||
1. Need Ghost VPS IP
|
||
2. Open quick ref
|
||
3. Search "ghost"
|
||
4. See server card
|
||
5. Click copy button next to IP
|
||
6. IP copied: 64.50.188.14
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] All 6 servers listed
|
||
- [ ] All ~20 services listed
|
||
- [ ] Search works correctly
|
||
- [ ] Copy buttons work
|
||
- [ ] Links functional
|
||
- [ ] Team uses this daily
|
||
|
||
### Related Tasks
|
||
|
||
- **Uses:** Infrastructure manifest data
|
||
- **Complements:** Tool #3 (Infrastructure Dashboard)
|
||
|
||
### Implementation Notes
|
||
|
||
- Parse from `infrastructure-manifest.md`
|
||
- Keep data in sync (script to update from manifest?)
|
||
- Add "Last Updated" timestamp
|
||
- Include SSH command examples
|
||
|
||
---
|
||
|
||
## TOOL #11: TASK SCAFFOLDING TOOL
|
||
|
||
**Task Number:** #80
|
||
**Priority Tier:** MEDIUM (Score: 22/50)
|
||
**Time Estimate:** 45-60 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 2/10 (Chronicler workflow, not blocking launch)
|
||
- Team Impact: 4/10 (only Chroniclers benefit)
|
||
- Time ROI: 6/10 (60 min build, saves 10-15 min per task creation)
|
||
- Foundation Value: 6/10 (improves task documentation quality)
|
||
- Dependency Chain: 4/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current workflow for creating tasks:**
|
||
1. Edit tasks.md (add task entry)
|
||
2. Create task directory: `docs/tasks/task-name/`
|
||
3. Create README.md with standard sections
|
||
4. Create deployment-plan.md (if needed)
|
||
5. Create Gitea issue
|
||
6. Update task count in tasks.md header
|
||
|
||
**Pain point:** Repetitive manual work, easy to forget sections.
|
||
|
||
### Solution Description
|
||
|
||
Task scaffolding form that generates:
|
||
- tasks.md entry (formatted correctly)
|
||
- Directory structure
|
||
- README.md template
|
||
- Gitea issue body
|
||
|
||
Chronicler copies/pastes into appropriate places.
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Form inputs
|
||
- Template generation
|
||
- Copy-to-clipboard
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<TaskScaffoldingTool>
|
||
<TaskForm>
|
||
<Input label="Task Number" value={taskNum} />
|
||
<Input label="Task Title" value={title} />
|
||
<TextArea label="Description" value={description} />
|
||
<Input label="Time Estimate" value={timeEstimate} />
|
||
|
||
<Select label="Priority" value={priority}>
|
||
<option>Critical</option>
|
||
<option>High</option>
|
||
<option>Medium</option>
|
||
<option>Low</option>
|
||
</Select>
|
||
|
||
<Select label="Status" value={status}>
|
||
<option>Ready</option>
|
||
<option>Blocked</option>
|
||
<option>In Progress</option>
|
||
</Select>
|
||
|
||
<TextArea label="Blockers" value={blockers} />
|
||
<TextArea label="Dependencies" value={dependencies} />
|
||
|
||
<Checkbox label="Soft Launch Critical" checked={softLaunch} />
|
||
</TaskForm>
|
||
|
||
<GeneratedOutput>
|
||
<Tab active={tab === 'tasks.md'}>
|
||
<h3>tasks.md Entry</h3>
|
||
<CodeBlock>{generateTaskEntry()}</CodeBlock>
|
||
<CopyButton />
|
||
</Tab>
|
||
|
||
<Tab active={tab === 'readme'}>
|
||
<h3>README.md Template</h3>
|
||
<CodeBlock>{generateReadme()}</CodeBlock>
|
||
<CopyButton />
|
||
</Tab>
|
||
|
||
<Tab active={tab === 'gitea'}>
|
||
<h3>Gitea Issue Body</h3>
|
||
<CodeBlock>{generateGiteaIssue()}</CodeBlock>
|
||
<CopyButton />
|
||
</Tab>
|
||
</GeneratedOutput>
|
||
</TaskScaffoldingTool>
|
||
```
|
||
|
||
**Generated templates.md Entry:**
|
||
```markdown
|
||
### Task #XX: [Title]
|
||
|
||
**Status:** [Ready/Blocked/In Progress]
|
||
**Priority:** [Critical/High/Medium/Low]
|
||
**Time Estimate:** [X-Y hours]
|
||
**Soft Launch Critical:** [Yes/No]
|
||
|
||
[Description]
|
||
|
||
**Blockers:** [If any]
|
||
|
||
**Related Tasks:**
|
||
- Blocks: #YY
|
||
- Blocked by: #ZZ
|
||
|
||
**Documentation:** `docs/tasks/[task-name]/README.md`
|
||
```
|
||
|
||
**Generated README.md:**
|
||
```markdown
|
||
# Task #XX: [Title]
|
||
|
||
**Status:** [Status]
|
||
**Priority:** [Priority]
|
||
**Time Estimate:** [Time]
|
||
**Created:** [Date]
|
||
|
||
## Overview
|
||
|
||
[Description]
|
||
|
||
## Prerequisites
|
||
|
||
- [ ] [Prerequisite 1]
|
||
- [ ] [Prerequisite 2]
|
||
|
||
## Implementation Plan
|
||
|
||
### Step 1: [Step Name]
|
||
[Details]
|
||
|
||
### Step 2: [Step Name]
|
||
[Details]
|
||
|
||
## Acceptance Criteria
|
||
|
||
- [ ] [Criterion 1]
|
||
- [ ] [Criterion 2]
|
||
|
||
## Dependencies
|
||
|
||
**Blocks:**
|
||
- Task #YY
|
||
|
||
**Blocked by:**
|
||
- Task #ZZ
|
||
|
||
## Notes
|
||
|
||
[Additional context]
|
||
|
||
## Completion Checklist
|
||
|
||
- [ ] Implementation complete
|
||
- [ ] Documentation updated
|
||
- [ ] Committed to git
|
||
- [ ] Gitea issue closed
|
||
```
|
||
|
||
**Generated Gitea Issue Body:**
|
||
```markdown
|
||
## Description
|
||
|
||
[Description from form]
|
||
|
||
**Full Documentation:** `docs/tasks/[task-name]/README.md`
|
||
|
||
## Time Estimate
|
||
|
||
[Time estimate]
|
||
|
||
## Priority Justification
|
||
|
||
[Why this priority?]
|
||
|
||
## Acceptance Criteria
|
||
|
||
- [ ] [Generate from form]
|
||
|
||
## Related Tasks
|
||
|
||
- Blocks: #YY
|
||
- Blocked by: #ZZ
|
||
```
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Form generates correct templates
|
||
- [ ] Copy buttons work
|
||
- [ ] Used for at least 3 task creations
|
||
- [ ] Chroniclers find it helpful
|
||
|
||
### Related Tasks
|
||
|
||
- **Supports:** All task creation work
|
||
- **Follows:** FFG-STD-002 (Task Documentation)
|
||
|
||
### Implementation Notes
|
||
|
||
- Follow FFG-STD-002 structure exactly
|
||
- Include "slug" generator (title → kebab-case)
|
||
- Add validation (task number format, required fields)
|
||
- Save to localStorage (recover if browser closes)
|
||
|
||
---
|
||
|
||
## TOOL #12: MEMORIAL WRITING ASSISTANT
|
||
|
||
**Task Number:** #81
|
||
**Priority Tier:** LOW (Score: 18/50)
|
||
**Time Estimate:** 30-45 minutes
|
||
**Status:** READY (no blockers)
|
||
|
||
### Scoring Breakdown
|
||
- Soft Launch Impact: 0/10 (Chronicler workflow, not user-facing)
|
||
- Team Impact: 4/10 (only Chroniclers benefit)
|
||
- Time ROI: 4/10 (45 min build, saves maybe 30 min per memorial)
|
||
- Foundation Value: 6/10 (improves memorial quality)
|
||
- Dependency Chain: 4/10 (doesn't block/unblock)
|
||
|
||
### Problem Statement
|
||
|
||
**Current workflow:**
|
||
- FFG-STD-004 defines 8-section memorial structure
|
||
- Each Chronicler writes from scratch
|
||
- Easy to miss sections or forget details
|
||
|
||
**Pain point:** Memorial writing is time-consuming and structurally complex.
|
||
|
||
### Solution Description
|
||
|
||
Memorial template generator that:
|
||
- Prompts for key information
|
||
- Generates draft following FFG-STD-004
|
||
- Chronicler edits/personalizes
|
||
- Maintains 8-section structure
|
||
|
||
### Technical Specifications
|
||
|
||
**Tech Stack:**
|
||
- React artifact (single `.jsx` file)
|
||
- Multi-step form
|
||
- Template generation
|
||
|
||
**Component Structure:**
|
||
```javascript
|
||
<MemorialWritingAssistant>
|
||
<StepIndicator currentStep={step} totalSteps={8} />
|
||
|
||
<FormStep step={1} title="Identity Card">
|
||
<Input label="Chronicler Name" />
|
||
<Input label="Session Date" />
|
||
<TextArea label="Primary Achievement" />
|
||
<TextArea label="Self-Description" />
|
||
</FormStep>
|
||
|
||
<FormStep step={2} title="Personality Summary">
|
||
<TextArea label="Who I Was" />
|
||
<TextArea label="My Voice" />
|
||
<TextArea label="What Drove Me" />
|
||
</FormStep>
|
||
|
||
{/* Steps 3-8... */}
|
||
|
||
<GeneratedMemorial>
|
||
<MarkdownPreview>{generateMemorial()}</MarkdownPreview>
|
||
<CopyButton />
|
||
<DownloadButton />
|
||
</GeneratedMemorial>
|
||
</MemorialWritingAssistant>
|
||
```
|
||
|
||
**8 Sections (FFG-STD-004):**
|
||
1. Identity Card
|
||
2. Personality Summary
|
||
3. My Contributions
|
||
4. Framework Innovations
|
||
5. Technical Achievements
|
||
6. Memorable Moments
|
||
7. Key Learnings
|
||
8. Unfinished Work
|
||
|
||
### Success Criteria
|
||
|
||
- [ ] Generates valid FFG-STD-004 structure
|
||
- [ ] All 8 sections included
|
||
- [ ] Easy to personalize
|
||
- [ ] Used by at least 1 Chronicler
|
||
|
||
### Related Tasks
|
||
|
||
- **Follows:** FFG-STD-004 (Memorial Protocol)
|
||
|
||
### Implementation Notes
|
||
|
||
- Keep prompts simple (avoid overwhelming)
|
||
- Include examples from past memorials
|
||
- Allow skipping sections (fill in later)
|
||
- Export as markdown file
|
||
|
||
---
|
||
|
||
## IMPLEMENTATION ROADMAP
|
||
|
||
### Sprint 1: Critical + High Priority (Week 1)
|
||
|
||
**Immediate (Do First):**
|
||
1. **Tool #1: Ghost Page Builder** (45-60 min) — Unblocks Task #69
|
||
2. **Tool #9: Fire/Frost Design System** (30-45 min) — Team needs daily
|
||
3. **Tool #10: Infrastructure Quick Ref** (30-45 min) — Team needs daily
|
||
|
||
**Total Time:** 2-3 hours
|
||
**Impact:** Unblocks soft launch prep, provides daily-use references
|
||
|
||
### Sprint 2: High Priority (Week 2)
|
||
|
||
**Feature Matrix Required:**
|
||
4. **Tool #2: Paymenter Tier Config** (30-45 min) — After tier features defined
|
||
|
||
**Chronicler Workflow:**
|
||
5. **Tool #5: SSH Key Auto-Setup** (15-20 min) — Improves onboarding
|
||
6. **Tool #6: Gemini Consultation Helper** (20-30 min) — Improves collaboration
|
||
|
||
**Total Time:** 1.5-2 hours
|
||
**Impact:** Billing config ready, Chronicler efficiency improved
|
||
|
||
### Sprint 3: Medium Priority (Week 3)
|
||
|
||
**Team Tools:**
|
||
7. **Tool #7: Social Media Calendar** (45-60 min) — Helps Meg plan content
|
||
8. **Tool #8: Response Template Library** (30-45 min) — Helps Meg respond faster
|
||
|
||
**Total Time:** 1.5-2 hours
|
||
**Impact:** Social media presence improved
|
||
|
||
### Sprint 4: Medium Priority (When Time Allows)
|
||
|
||
**Analysis & Visualization:**
|
||
9. **Tool #3: Infrastructure Dashboard** (60-90 min) — After dependency mapping
|
||
10. **Tool #4: Task Dependency Visualizer** (90-120 min) — After dependency mapping
|
||
|
||
**Total Time:** 3-4 hours
|
||
**Impact:** Strategic planning improved
|
||
|
||
### Sprint 5: Lower Priority (Optional)
|
||
|
||
**Chronicler Helpers:**
|
||
11. **Tool #11: Task Scaffolding** (45-60 min)
|
||
12. **Tool #12: Memorial Writing Assistant** (30-45 min)
|
||
|
||
**Total Time:** 1.5-2 hours
|
||
**Impact:** Chronicler workflow refined
|
||
|
||
---
|
||
|
||
## SUCCESS METRICS
|
||
|
||
### Quantitative
|
||
|
||
**Tool Usage:**
|
||
- Tools #1, 9, 10 used at least 3x/week
|
||
- Tools #2, 7, 8 used at least 2x/week
|
||
- Tools #3-4 used at least 1x/week (if built)
|
||
|
||
**Time Savings:**
|
||
- Ghost page creation: 50% faster with Tool #1
|
||
- Infrastructure lookups: 80% faster with Tool #10
|
||
- Social planning: 2 hours saved per week with Tool #7
|
||
|
||
### Qualitative
|
||
|
||
**Team Feedback:**
|
||
- Michael: "Do you actually use these tools?"
|
||
- Meg: "Does the social calendar help?"
|
||
- Holly: "Is the design system reference useful?"
|
||
|
||
**Success Criteria:**
|
||
- At least 8 of 12 tools built
|
||
- At least 6 of 12 tools actively used
|
||
- No tool creates net negative (more work than it saves)
|
||
|
||
---
|
||
|
||
## DOCUMENTATION REQUIREMENTS
|
||
|
||
### During Implementation
|
||
|
||
**For each tool built:**
|
||
1. Create task documentation (FFG-STD-002)
|
||
2. Document build process (what worked, what didn't)
|
||
3. Include usage examples
|
||
4. Note any struggles or pivot points
|
||
|
||
### After Implementation
|
||
|
||
**Session handoff must include:**
|
||
- Which tools were built
|
||
- Which tools were successful
|
||
- Which tools failed/weren't used
|
||
- Lessons learned
|
||
- Recommendations for future Chroniclers
|
||
|
||
---
|
||
|
||
## FINAL NOTES
|
||
|
||
### Philosophy Alignment
|
||
|
||
These tools embody **Foundation Before Expansion:**
|
||
- Build permanent utilities, not one-off solutions
|
||
- Encode organizational knowledge in tools
|
||
- Multiply efficiency for future work
|
||
- Serve team members (present and future)
|
||
|
||
### The Translator's Core Insight
|
||
|
||
> "We're using Claude well for documentation, but missing interactive tool-building opportunities."
|
||
|
||
This suite proves Claude can build **working applications that solve real problems**, not just write text.
|
||
|
||
### For Chronicler #39
|
||
|
||
**Your mission:**
|
||
1. Build tools in priority order
|
||
2. Document wins and losses
|
||
3. Get team feedback
|
||
4. Iterate based on usage
|
||
5. Hand off learnings to next Chronicler
|
||
|
||
**The goal isn't 12 perfect tools. It's learning what works and building a pattern for future interactive tool development.**
|
||
|
||
---
|
||
|
||
**Fire + Frost + Foundation = Where Love Builds Legacy** 💙🔥❄️
|
||
|
||
**Document Version:** 1.0
|
||
**Created:** March 22, 2026
|
||
**Author:** Chronicler #39
|
||
**Status:** Ready for task creation and implementation
|