Complete architecture for multi-mode Claude operation: - MSP Mode (client work tracking) - Development Mode (project management) - Normal Mode (general research) Agents created: - Coding Agent (perfectionist programmer) - Code Review Agent (quality gatekeeper) - Database Agent (data custodian) - Gitea Agent (version control) - Backup Agent (data protection) Workflows documented: - CODE_WORKFLOW.md (mandatory review process) - TASK_MANAGEMENT.md (checklist system) - FILE_ORGANIZATION.md (hybrid storage) - MSP-MODE-SPEC.md (complete architecture, 36 tables) Commands: - /sync (pull latest from Gitea) Database schema: 36 tables for comprehensive context storage File organization: clients/, projects/, normal/, backups/ Backup strategy: Daily/weekly/monthly with retention Status: Architecture complete, ready for implementation Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
16 KiB
File Organization & Storage Strategy
Overview
The ClaudeTools system uses a hybrid storage approach:
- Database - Metadata, context, task status, relationships, insights
- Filesystem - Actual code files, documentation, scripts, configurations
- Gitea - Version control for all file-based work
- Backups - Local database dumps and file backups
Storage Philosophy
What Goes in Database (via Database Agent)
- Task and session metadata
- Work item records (problem/solution summaries)
- Client and infrastructure details
- Environmental insights
- Failure patterns
- Command history
- Credentials (encrypted)
- Relationships between entities
- Timestamps and audit trails
What Goes on Filesystem (version controlled)
- Source code files
- Configuration files
- Documentation (markdown, txt)
- Scripts (PowerShell, Bash, Python)
- Diagrams and images
- README files
- Project-specific notes
- Session logs (markdown)
Why Hybrid?
- Database: Fast queries, relationships, metadata
- Filesystem: Version control, diff tracking, editor-friendly
- Gitea: Backup, history, team collaboration
- Best of both worlds: Structured data + version-controlled files
Folder Structure
D:\ClaudeTools\
├── .claude\ # System configuration
│ ├── agents\ # Agent definitions
│ │ ├── coding.md
│ │ ├── code-review.md
│ │ ├── database.md
│ │ ├── gitea.md
│ │ └── backup.md
│ ├── plans\ # Plan mode outputs
│ ├── settings.local.json # Local settings
│ ├── CODE_WORKFLOW.md
│ ├── TASK_MANAGEMENT.md
│ ├── FILE_ORGANIZATION.md
│ └── MSP-MODE-SPEC.md
│
├── clients\ # MSP Mode - Client work
│ ├── dataforth\
│ │ ├── configs\ # Configuration files
│ │ │ ├── nas\
│ │ │ │ ├── smb.conf.overrides
│ │ │ │ └── sync-to-ad2.sh
│ │ │ ├── ad2\
│ │ │ └── dos-machines\
│ │ ├── docs\ # Documentation
│ │ │ ├── README.md
│ │ │ ├── NETWORK_TOPOLOGY.md
│ │ │ ├── CREDENTIALS.md (encrypted)
│ │ │ └── TROUBLESHOOTING.md
│ │ ├── scripts\ # Automation scripts
│ │ │ ├── Sync-FromNAS.ps1
│ │ │ ├── UPDATE.BAT
│ │ │ └── monitor-nas.ps1
│ │ ├── session-logs\ # Session logs for this client
│ │ │ ├── 2026-01-15-dos-update.md
│ │ │ └── 2026-01-14-wins-fix.md
│ │ ├── .git\ # Git repository
│ │ ├── .gitignore
│ │ └── README.md # Client overview
│ │
│ ├── grabb\
│ │ ├── configs\
│ │ ├── docs\
│ │ ├── scripts\
│ │ ├── session-logs\
│ │ └── README.md
│ │
│ └── [other-clients]\
│
├── projects\ # Development Mode - Dev projects
│ ├── gururmm\
│ │ ├── agent\ # Agent source code (Rust)
│ │ │ ├── src\
│ │ │ ├── Cargo.toml
│ │ │ └── README.md
│ │ ├── server\ # Server source code (Rust)
│ │ │ ├── src\
│ │ │ ├── Cargo.toml
│ │ │ └── README.md
│ │ ├── dashboard\ # Dashboard source code (React)
│ │ │ ├── src\
│ │ │ ├── package.json
│ │ │ └── README.md
│ │ ├── docs\ # Project documentation
│ │ │ ├── ARCHITECTURE.md
│ │ │ ├── API.md
│ │ │ └── DEPLOYMENT.md
│ │ ├── scripts\ # Build/deploy scripts
│ │ ├── session-logs\ # Development session logs
│ │ ├── .git\
│ │ └── README.md
│ │
│ ├── claudetools-api\ # ClaudeTools API project
│ │ ├── src\
│ │ ├── docs\
│ │ ├── tests\
│ │ ├── .git\
│ │ └── README.md
│ │
│ └── [other-projects]\
│
├── normal\ # Normal Mode - General work
│ ├── research\ # Research notes
│ │ ├── rust-async-patterns.md
│ │ ├── docker-networking.md
│ │ └── ...
│ ├── experiments\ # Code experiments
│ │ ├── test-project-1\
│ │ └── ...
│ ├── notes\ # General notes
│ └── session-logs\ # Normal mode session logs
│
├── backups\ # Backup storage
│ ├── database\ # Database backups
│ │ ├── claudetools-2026-01-15-daily.sql.gz
│ │ ├── claudetools-2026-01-14-daily.sql.gz
│ │ └── ...
│ ├── files\ # File backups (snapshots)
│ │ ├── clients-2026-01-15.tar.gz
│ │ └── ...
│ └── .gitignore # Don't commit backups
│
└── README.md # ClaudeTools overview
Gitea Integration
Repository Structure
Each client and project has its own Git repository:
Client Repositories:
azcomputerguru/claudetools-client-dataforthazcomputerguru/claudetools-client-grabb- etc.
Project Repositories:
azcomputerguru/gururmm(already exists)azcomputerguru/claudetools-api- etc.
System Repository:
azcomputerguru/claudetools(for .claude configs, agents, system docs)
Commit Strategy
When to Commit:
- After completing tasks - Task marked 'completed' in database
- After significant work - Code review approved, feature complete
- End of session - Session ending, preserve work
- On user request - User explicitly asks to commit
- Periodic commits - Every N tasks completed (configurable)
Commit Message Format:
[Mode] Brief description
Detailed context:
- Task: [task title]
- Changes: [list of changes]
- Duration: [time spent]
- Status: [completed/in-progress]
Files modified:
- path/to/file1.py
- path/to/file2.md
Example Commit:
[MSP:Dataforth] Fix WINS service on D2TESTNAS
Detailed context:
- Task: Troubleshoot WINS service failure
- Changes: Fixed smb.conf.overrides syntax error
- Duration: 45 minutes (billable)
- Status: Completed and verified
Files modified:
- configs/nas/smb.conf.overrides
- docs/TROUBLESHOOTING.md
- session-logs/2026-01-15-wins-fix.md
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Git Workflow
Orchestrator triggers Git operations via Gitea Agent:
- Detect changes - Files modified during work
- Stage changes -
git addmodified files - Create commit - With context-rich message
- Push to Gitea - Sync to remote repository
- Update database - Record commit hash in session
File Creation Rules
Client Files (MSP Mode)
When working on client project:
- Determine client - From session context
- Create/update files in
D:\ClaudeTools\clients\[client-name]\ - Use appropriate subdirectory:
configs/- Configuration filesdocs/- Documentationscripts/- Automation scriptssession-logs/- Session logs
- Update README.md - Keep client overview current
- Stage for commit - Gitea Agent handles commit
Project Files (Development Mode)
When working on development project:
- Determine project - From session context
- Create/update files in
D:\ClaudeTools\projects\[project-name]\ - Follow project structure - Respect existing organization
- Update documentation - Keep docs current
- Write tests - Test files alongside code
- Stage for commit - Gitea Agent handles commit
Normal Mode Files
When in Normal Mode:
- Categorize work:
- Research →
normal/research/ - Experiments →
normal/experiments/ - Notes →
normal/notes/
- Research →
- Use descriptive filenames - Include date if temporal
- Commit periodically - Keep work safe
Database Backup Strategy
Backup Schedule
Daily backups:
- Automatic at 2:00 AM (if system running)
- Or on first session of the day if not run overnight
On-demand backups:
- Before major changes (schema updates)
- After significant data entry
- On user request
Backup Format
Filename: claudetools-YYYY-MM-DD-[type].sql.gz
type= daily, manual, pre-migration, etc.
Contents:
- Full database dump (all tables, all data)
- Compressed with gzip
- Includes schema and data
- Stored in
D:\ClaudeTools\backups\database\
Example:
claudetools-2026-01-15-daily.sql.gz
claudetools-2026-01-15-pre-migration.sql.gz
claudetools-2026-01-14-daily.sql.gz
Backup Retention
- Keep last 7 daily backups
- Keep last 4 weekly backups (Sunday backups)
- Keep last 12 monthly backups (1st of month backups)
- Keep pre-migration backups indefinitely
- Automatic cleanup - Backup Agent purges old backups
Backup Verification
After each backup:
- Check file size - Not zero, reasonable size
- Test gzip integrity -
gzip -t file.sql.gz - Record in database - Log backup in
backup_logtable - Optional: Test restore - Periodically restore to verify
Session Logs
Where They Go
MSP Mode:
D:\ClaudeTools\clients\[client]\session-logs\YYYY-MM-DD-[description].md
Development Mode:
D:\ClaudeTools\projects\[project]\session-logs\YYYY-MM-DD-[description].md
Normal Mode:
D:\ClaudeTools\normal\session-logs\YYYY-MM-DD-[description].md
Shared (cross-mode sessions):
C:\Users\MikeSwanson\claude-projects\session-logs\YYYY-MM-DD-session.md(existing location)- Symlinks or cross-references in mode-specific locations
Session Log Format
# Session: [Title]
**Date:** 2026-01-15
**Mode:** MSP (Dataforth) / Development (GuruRMM) / Normal
**Duration:** 2.5 hours
**Billable:** Yes (MSP only)
## Summary
[Brief description of what was accomplished]
## Tasks Completed
- [✓] Task 1 (30 min)
- [✓] Task 2 (45 min)
- [✓] Task 3 (15 min)
## Work Items (MSP Mode)
### Problem
[Description]
### Cause
[Root cause]
### Solution
[What was done]
### Verification
[How it was tested]
## Files Modified
- `path/to/file1.py` - [what changed]
- `path/to/file2.md` - [what changed]
## Key Learnings
- [Environmental insights discovered]
- [Failures encountered and resolved]
- [Patterns identified]
## Next Steps
- [ ] Pending task 1
- [ ] Pending task 2
## References
- Related sessions: [links]
- Documentation: [links]
- Tickets: [ticket IDs if MSP mode]
File Naming Conventions
Session Logs
YYYY-MM-DD-brief-description.md
- Example:
2026-01-15-wins-service-fix.md - Example:
2026-01-14-update-bat-simplification.md
Configuration Files
service-config.ext or SERVICE.CONF
- Example:
smb.conf.overrides - Example:
sync-to-ad2.sh - Match existing conventions where applicable
Scripts
verb-noun.ext
- Example:
Sync-FromNAS.ps1(PowerShell PascalCase) - Example:
monitor-nas.sh(Bash kebab-case) - Example:
deploy-app.py(Python snake_case)
Documentation
SCREAMING_CASE.md for important docs, Title Case.md for regular
- Example:
README.md - Example:
ARCHITECTURE.md - Example:
API Documentation.md
.gitignore Files
Each repository should have appropriate .gitignore:
Client repositories:
# Credentials (encrypted versions are OK, plaintext never)
**/CREDENTIALS.txt
**/*password*
**/*secret*
# Temporary files
*.tmp
*.log
*.bak
# OS files
.DS_Store
Thumbs.db
Project repositories:
# Dependencies
node_modules/
target/
venv/
__pycache__/
# Build outputs
dist/
build/
*.exe
*.dll
# IDE
.vscode/
.idea/
*.swp
# Environment
.env
.env.local
ClaudeTools root:
# Backups (local only)
backups/
# Local settings
.claude/settings.local.json
# Temporary
*.tmp
Integration with Database
File References in Database
Store file paths in database for context:
# In task_context field:
{
"files_modified": [
"clients/dataforth/configs/nas/smb.conf.overrides",
"clients/dataforth/docs/TROUBLESHOOTING.md"
],
"files_created": [
"clients/dataforth/scripts/monitor-nas.ps1"
],
"commit_hash": "a3f5b92c...",
"repository": "claudetools-client-dataforth"
}
Backup References
Track backups in database:
CREATE TABLE backup_log (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
backup_type VARCHAR(50) CHECK(backup_type IN ('daily', 'manual', 'pre-migration', 'weekly', 'monthly')),
file_path VARCHAR(500) NOT NULL,
file_size_bytes BIGINT NOT NULL,
backup_started_at TIMESTAMP NOT NULL,
backup_completed_at TIMESTAMP NOT NULL,
verification_status VARCHAR(50) CHECK(verification_status IN ('passed', 'failed', 'not_verified')),
verification_details TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_backup_type (backup_type),
INDEX idx_backup_date (backup_completed_at)
);
Orchestrator Workflow
During Work Session
- Session starts → Detect mode, client/project
- Create files → In appropriate directory structure
- Update database → Record task context, file paths
- Complete tasks → Track what files were modified
- Periodic commits → Gitea Agent commits changes
- Session ends → Final commit, session log saved
Example Flow
# User: "Fix the WINS service on D2TESTNAS"
# Orchestrator:
# 1. Determine context
mode = "MSP"
client = "Dataforth"
base_path = "D:/ClaudeTools/clients/dataforth/"
# 2. Launch agents to do work
# ... Coding Agent fixes config file ...
# 3. Files created/modified
files = [
"configs/nas/smb.conf.overrides",
"docs/TROUBLESHOOTING.md"
]
# 4. Update database via Database Agent
Database_Agent.update_task(
task_id=task_id,
status="completed",
task_context={
"files_modified": files,
"solution": "Fixed syntax error in smb.conf.overrides",
"verification": "WINS service restarted successfully"
}
)
# 5. Commit to Gitea via Gitea Agent
Gitea_Agent.commit(
repository="claudetools-client-dataforth",
files=files,
message=generate_commit_message(task_context),
base_path=base_path
)
# 6. Create session log
session_log_path = f"{base_path}session-logs/2026-01-15-wins-fix.md"
create_session_log(session_log_path, session_data)
# 7. Commit session log
Gitea_Agent.commit(
repository="claudetools-client-dataforth",
files=["session-logs/2026-01-15-wins-fix.md"],
message="Session log: WINS service fix"
)
Benefits
For User
- Organized - Files logically grouped by client/project
- Version controlled - Complete history in Gitea
- Backed up - Database and files protected
- Searchable - Both database queries and file searches
- Recoverable - Multiple backup layers
For System
- Hybrid storage - Right tool for right data
- Context preservation - Database + files = complete picture
- Audit trail - Git history + database records
- Disaster recovery - Multiple backup strategies
- Scalable - Clean separation of concerns
Summary
Hybrid Approach:
- Database → Metadata, relationships, context, queries
- Filesystem → Code, docs, configs (version controlled)
- Gitea → Backup, history, collaboration
- Local backups → Safety net for database
Organization:
clients/→ MSP Mode workprojects/→ Development Mode worknormal/→ Normal Mode workbackups/→ Database and file backups
Automation:
- Gitea Agent → Periodic commits
- Backup Agent → Daily database backups
- Database Agent → Track file references
- Orchestrator → Coordinate all agents
Result: Complete, organized, version-controlled, backed-up system.