activepieces
AI Agents & MCPs & AI Workflow Automation β’ (~400 MCP servers for AI agents) β’ AI Automation / AI Agent with MCPs β’ AI Workflows & AI Agents β’ MCPs for AI Agents
Crawler Summary
Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. --- name: garmin-workout description: Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. license: Garmin FIT SDK - SEE LICENSE IN LICENSE.txt metadata: openclaw: emoji: "π" requires: bins: ["node"] install: - id: npm kind Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Freshness
Last checked 4/14/2026
Best For
garmin-workout is best for easily, be, both workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. --- name: garmin-workout description: Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. license: Garmin FIT SDK - SEE LICENSE IN LICENSE.txt metadata: openclaw: emoji: "π" requires: bins: ["node"] install: - id: npm kind
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 14, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 14, 2026
Vendor
Linksawakening
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Setup snapshot
git clone https://github.com/linksawakening/garmin-workout.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Linksawakening
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
bash
# No --output specified β creates both workout.fit and workout.json in current directory
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Morning Run" --steps '[
{"name": "Warm up", "duration": 300, "intensity": "warmup", "targetType": "heartRate", "targetMin": 120, "targetMax": 140},
{"name": "Run", "duration": 1800, "intensity": "active", "targetType": "speed", "targetMin": 8, "targetMax": 10},
{"name": "Cool down", "duration": 300, "intensity": "cooldown", "targetType": "heartRate", "targetMin": 100, "targetMax": 120}
]'bash
# Output ends in .fit β creates only .FIT file
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/run.fit --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'
# Output ends in .json β creates only .JSON file
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/run.json --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'
# Output is a directory β creates both .fit and .json in that directory
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/workouts/ --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'bash
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "HIIT Session" \
--output /tmp/hiit.fit \
--sport running \
--steps '[
{"name": "Warm up", "duration": 300, "intensity": "warmup", "targetType": "heartRate", "targetMin": 110, "targetMax": 130},
{"name": "Sprint", "duration": 60, "intensity": "active", "targetType": "heartRate", "targetMin": 160, "targetMax": 175},
{"name": "Rest", "duration": 60, "intensity": "rest", "targetType": "heartRate", "targetMin": 100, "targetMax": 120}
]'text
β
Files written:
β’ test-run.json (JSON, 456 bytes)
--- JSON OUTPUT (copy for Garmin Connect import) ---
{
"workoutName": "Test Run",
"sportType": {
"sportTypeId": 1,
"sportTypeKey": "running"
},
...
}
--- END JSON OUTPUT ---bash
node scripts/skill.js --name "Run" --steps '[...]' | jq '.workoutName' ## Step Object Fields Each step in the steps array requires: | Field | Type | Description | |-------|------|-------------| | `name` | string | Step name | | `duration` | number | Duration in seconds | | `intensity` | string | Intensity: "warmup", "active", "cooldown", "rest" | | `targetType` | string | Target metric: "heartRate", "speed", "power", "cadence", "pace" (optional) | | `targetMin` | number | Minimum target value (FIT only, optional) | | `targetMax` | number | Maximum target value (FIT only, optional) | | `durationType` | string | Duration type: "time" (default) or "distance" (optional) | ## JSON Schema (for fulippo Chrome Extension) The JSON output follows the exact schema used by the [fulippo/share-your-garmin-workout](https://github.com/fulippo/share-your-garmin-workout) Chrome extension. ### JSON Output Example
text
### JSON Schema Reference | Field | Type | Description | |-------|------|-------------| | `workoutName` | string | Name of the workout | | `sportType` | object | Sport type with `sportTypeId` and `sportTypeKey` | | `workoutSegments` | array | Array of workout segments | ### Sport Types | Sport | sportTypeId | sportTypeKey | |-------|-------------|--------------| | running | 1 | running | | cycling | 2 | cycling | | swimming | 4 | swimming | | walking | 8 | walking | | fitness | 12 | fitness | | strength | 13 | strength | | cardio | 15 | cardio | | hiking | 18 | hiking | | rowing | 19 | rowing | | elliptical | 21 | elliptical | | stairClimbing | 22 | stairClimbing | ### Step Types | Type | stepTypeId | stepTypeKey | |------|-------------|-------------| | time | 3 | time | | distance | 1 | distance | ### Intensities | Intensity | intensityId | intensityKey | |-----------|-------------|--------------| | warmup | 0 | warmup | | active | 1 | active | | cooldown | 2 | cooldown | | rest | 3 | rest | ### Target Types | Target | stepTargetId | stepTargetKey | |--------|---------------|---------------| | noTarget | 0 | noTarget | | heartRate | 2 | heartRate | | speed | 3 | speed | | power | 5 | power | | cadence | 7 | cadence | | pace | 9 | pace | ## Validation ### FIT Validation - Uses official `@garmin/fitsdk` package for encoding - Generates standard Garmin FIT profile-compliant files - All messages are validated against FIT profile definitions - Compatible with Garmin's validation requirements ### JSON Validation The skill includes built-in JSON schema validation that checks: - **Required top-level fields**: `workoutName`, `sportType`, `workoutSegments` - **Sport type**: Valid `sportTypeId` and `sportTypeKey` - **Workout segments**: Non-empty array with valid segment order - **Step validation** per step: - `stepId` (can be null or number) - `stepName` (string) - `stepType` with `stepTypeId` and `stepTypeKey` - `duration` with `type` and `value` -
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. --- name: garmin-workout description: Generate Garmin-compatible workout files (.FIT and .JSON) for Garmin Connect and devices. Supports multi-step workouts with duration, intensity targets, and various exercise types. Compatible with fulippo/share-your-garmin-workout Chrome extension. license: Garmin FIT SDK - SEE LICENSE IN LICENSE.txt metadata: openclaw: emoji: "π" requires: bins: ["node"] install: - id: npm kind
Generate Garmin-compatible workout files for import into Garmin Connect or devices. Supports both .FIT binary format and JSON format compatible with the fulippo/share-your-garmin-workout Chrome extension.
# No --output specified β creates both workout.fit and workout.json in current directory
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Morning Run" --steps '[
{"name": "Warm up", "duration": 300, "intensity": "warmup", "targetType": "heartRate", "targetMin": 120, "targetMax": 140},
{"name": "Run", "duration": 1800, "intensity": "active", "targetType": "speed", "targetMin": 8, "targetMax": 10},
{"name": "Cool down", "duration": 300, "intensity": "cooldown", "targetType": "heartRate", "targetMin": 100, "targetMax": 120}
]'
# Output ends in .fit β creates only .FIT file
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/run.fit --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'
# Output ends in .json β creates only .JSON file
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/run.json --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'
# Output is a directory β creates both .fit and .json in that directory
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js --name "Run" --output /tmp/workouts/ --steps '[{"name": "Run", "duration": 1800, "intensity": "active"}]'
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "HIIT Session" \
--output /tmp/hiit.fit \
--sport running \
--steps '[
{"name": "Warm up", "duration": 300, "intensity": "warmup", "targetType": "heartRate", "targetMin": 110, "targetMax": 130},
{"name": "Sprint", "duration": 60, "intensity": "active", "targetType": "heartRate", "targetMin": 160, "targetMax": 175},
{"name": "Rest", "duration": 60, "intensity": "rest", "targetType": "heartRate", "targetMin": 100, "targetMax": 120}
]'
| Option | Description |
|--------|-------------|
| --name | Workout name (required) |
| --output | Output path, file, or directory (optional - default creates both) |
| --steps | JSON array of workout steps (required) |
| --sport | Sport type (default: "running") |
| --subSport | Sub-sport type (default: "generic") |
The skill writes files to disk based on the output specification:
| Output Specified | Creates |
|-----------------|---------|
| None (default) | workout-name.fit and workout-name.json in current directory |
| /path/file.fit | /path/file.fit only |
| /path/file.json | /path/file.json only |
| /path/dir/ | /path/dir/workout-name.fit and /path/dir/workout-name.json |
When generating JSON output, the skill also prints the full JSON content to stdout after writing the file. This allows users to copy/paste the JSON directly into the Chrome extension import without needing to read the file.
Important: When using this skill, always include the JSON output (between the --- JSON OUTPUT --- markers) in your response to the user. The JSON string should be part of the assistant's response output so users can easily copy/paste it for Garmin Connect import.
Example output:
β
Files written:
β’ test-run.json (JSON, 456 bytes)
--- JSON OUTPUT (copy for Garmin Connect import) ---
{
"workoutName": "Test Run",
"sportType": {
"sportTypeId": 1,
"sportTypeKey": "running"
},
...
}
--- END JSON OUTPUT ---
This is especially useful for workflows where you want to pipe or capture the JSON output:
node scripts/skill.js --name "Run" --steps '[...]' | jq '.workoutName'
## Step Object Fields
Each step in the steps array requires:
| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Step name |
| `duration` | number | Duration in seconds |
| `intensity` | string | Intensity: "warmup", "active", "cooldown", "rest" |
| `targetType` | string | Target metric: "heartRate", "speed", "power", "cadence", "pace" (optional) |
| `targetMin` | number | Minimum target value (FIT only, optional) |
| `targetMax` | number | Maximum target value (FIT only, optional) |
| `durationType` | string | Duration type: "time" (default) or "distance" (optional) |
## JSON Schema (for fulippo Chrome Extension)
The JSON output follows the exact schema used by the [fulippo/share-your-garmin-workout](https://github.com/fulippo/share-your-garmin-workout) Chrome extension.
### JSON Output Example
```json
{
"workoutName": "Morning Run",
"sportType": {
"sportTypeId": 1,
"sportTypeKey": "running"
},
"workoutSegments": [{
"segmentOrder": 1,
"workoutSteps": [
{
"stepId": null,
"stepName": "Warm up",
"stepType": {
"stepTypeId": 3,
"stepTypeKey": "time"
},
"duration": {
"type": "time",
"value": 300
},
"intensity": {
"intensityId": 0,
"intensityKey": "warmup"
},
"targetType": {
"stepTargetId": 0,
"stepTargetKey": "noTarget"
}
}
]
}]
}
| Field | Type | Description |
|-------|------|-------------|
| workoutName | string | Name of the workout |
| sportType | object | Sport type with sportTypeId and sportTypeKey |
| workoutSegments | array | Array of workout segments |
| Sport | sportTypeId | sportTypeKey | |-------|-------------|--------------| | running | 1 | running | | cycling | 2 | cycling | | swimming | 4 | swimming | | walking | 8 | walking | | fitness | 12 | fitness | | strength | 13 | strength | | cardio | 15 | cardio | | hiking | 18 | hiking | | rowing | 19 | rowing | | elliptical | 21 | elliptical | | stairClimbing | 22 | stairClimbing |
| Type | stepTypeId | stepTypeKey | |------|-------------|-------------| | time | 3 | time | | distance | 1 | distance |
| Intensity | intensityId | intensityKey | |-----------|-------------|--------------| | warmup | 0 | warmup | | active | 1 | active | | cooldown | 2 | cooldown | | rest | 3 | rest |
| Target | stepTargetId | stepTargetKey | |--------|---------------|---------------| | noTarget | 0 | noTarget | | heartRate | 2 | heartRate | | speed | 3 | speed | | power | 5 | power | | cadence | 7 | cadence | | pace | 9 | pace |
@garmin/fitsdk package for encodingThe skill includes built-in JSON schema validation that checks:
workoutName, sportType, workoutSegmentssportTypeId and sportTypeKeystepId (can be null or number)stepName (string)stepType with stepTypeId and stepTypeKeyduration with type and valueintensity with intensityId and intensityKeytargetType with stepTargetId and stepTargetKeyValidation runs automatically when generating JSON output and reports any issues.
.json)| Sport | Valid Values |
|-------|-------------|
| running | generic, trail, road, track, treadmill |
| cycling | generic, road, mountain, cross, indoor, elliptical |
| swimming | generic, openWater, pool |
| walking | generic, hiking, nordic |
| fitness | generic, indoor, outdoor |
| strength | generic |
| cardio | generic, indoor, outdoor |
| hiking | generic, trail, mountain |
| rowing | generic, indoor, openWater |
| elliptical | generic |
| stairClimbing | generic, stairClimbing, hillClimbing |
Note: Use standard Garmin enum values. Custom values like "interval" are not valid.
# Creates morning-run.fit and morning-run.json
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "Easy Run" \
--steps '[{"name": "Run", "duration": 1800, "intensity": "active", "targetType": "speed", "targetMin": 8, "targetMax": 10}]'
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "HIIT Session" \
--output /tmp/hiit.fit \
--steps '[
{"name": "Warm up", "duration": 300, "intensity": "warmup", "targetType": "heartRate", "targetMin": 110, "targetMax": 130},
{"name": "Sprint", "duration": 60, "intensity": "active", "targetType": "heartRate", "targetMin": 160, "targetMax": 175},
{"name": "Rest", "duration": 60, "intensity": "rest", "targetType": "heartRate", "targetMin": 100, "targetMax": 120},
{"name": "Cool down", "duration": 300, "intensity": "cooldown", "targetType": "heartRate", "targetMin": 110, "targetMax": 130}
]'
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "Tempo Run" \
--output /tmp/tempo-run.json \
--steps '[
{"name": "Warm up", "duration": 600, "intensity": "warmup"},
{"name": "Tempo", "duration": 1200, "intensity": "active"},
{"name": "Cool down", "duration": 600, "intensity": "cooldown"}
]'
node /home/claw/.openclaw/workspace/skills/garmin-workout/skill.js \
--name "FTP Test" \
--output /tmp/garmin-workouts/ \
--sport cycling \
--steps '[
{"name": "Warm up", "duration": 600, "intensity": "warmup"},
{"name": "Build", "duration": 300, "intensity": "active"},
{"name": "All out", "duration": 1200, "intensity": "active"},
{"name": "Recovery", "duration": 300, "intensity": "rest"},
{"name": "All out", "duration": 1200, "intensity": "active"},
{"name": "Cool down", "duration": 600, "intensity": "cooldown"}
]'
Uses the official @garmin/fitsdk package to encode valid FIT files:
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/contract"
curl -s "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
AI Agents & MCPs & AI Workflow Automation β’ (~400 MCP servers for AI agents) β’ AI Automation / AI Agent with MCPs β’ AI Workflows & AI Agents β’ MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | π Star if you like it!
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-10-09T02:25:57.983Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "easily",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "be",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "both",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "custom",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:easily|supported|profile capability:be|supported|profile capability:both|supported|profile capability:custom|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Linksawakening",
"href": "https://github.com/linksawakening/garmin-workout",
"sourceUrl": "https://github.com/linksawakening/garmin-workout",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-14T22:23:50.745Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-14T22:23:50.745Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/linksawakening-garmin-workout/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub Β· GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to garmin-workout and adjacent AI workflows.