| name | dotnet-agent-harness-offline |
| description | Offline mode with local caching for air-gapped environments |
| metadata | {"short-description":".NET skill guidance for dotnet-agent-harness-offline"} |
Offline Mode
Enable offline operation with local skill and MCP caching.
Activation
export DOTNET_HARNESS_OFFLINE=true
rulesync generate --offline
```text
```text
.dotnet-agent-harness/
├── cache/
│ ├── skills/
│ ├── mcp-responses/
│ └── registry/
└── index.json
Workflow
-
Online Sync (when connected):
dotnet-agent-harness:sync-cache
-
Offline Operation:
- Uses cached skills exclusively
- MCP servers return cached responses
- Search uses local index
Configuration
{
"offline": {
"enabled": false,
"cachePath": ".dotnet-agent-harness/cache",
"maxCacheAge": "7d",
"fallbackEnabled": true
}
}
Commands
dotnet-agent-harness:sync-cache - Sync cache from remote
dotnet-agent-harness:clear-cache - Clear local cache
dotnet-agent-harness:cache-status - Show cache statistics
MCP Fallback
When offline:
- Serena: Uses cached symbol data
- Context7: Returns cached library docs
- Microsoft Learn: Serves from local cache
Best Practices
- Sync before travel/air-gapped work
- Keep cache under 500MB
- Clear stale cache weekly
- Use selective caching for large projects
Troubleshooting
Cache Miss: Run dotnet-agent-harness:sync-cache Stale Data: Clear and re-sync Large Cache: Exclude heavy
MCP servers
Code Navigation (Serena MCP)
Primary approach: Use Serena symbol operations for efficient code navigation:
- Find definitions:
serena_find_symbol instead of text search
- Understand structure:
serena_get_symbols_overview for file organization
- Track references:
serena_find_referencing_symbols for impact analysis
- Precise edits:
serena_replace_symbol_body for clean modifications
When to use Serena vs traditional tools:
- Use Serena: Navigation, refactoring, dependency analysis, precise edits
- Use Read/Grep: Reading full files, pattern matching, simple text operations
- Fallback: If Serena unavailable, traditional tools work fine
Example workflow:
# Instead of:
Read: src/Services/OrderService.cs
Grep: "public void ProcessOrder"
# Use:
serena_find_symbol: "OrderService/ProcessOrder"
serena_get_symbols_overview: "src/Services/OrderService.cs"