# Send Opys Calendar Skill to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "opys-calendar",
    "name": "Opys Calendar Skill",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/21J3phy/opys-calendar",
    "canonicalUrl": "https://clawhub.ai/21J3phy/opys-calendar",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/opys-calendar",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=opys-calendar",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      ".calendar-google-sync-state.json",
      ".calendar-settings.json",
      ".tmp-recent-calendar.md",
      "README.md",
      "SKILL.md",
      "calendar.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/opys-calendar"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/opys-calendar",
    "downloadUrl": "https://openagent3.xyz/downloads/opys-calendar",
    "agentUrl": "https://openagent3.xyz/skills/opys-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/opys-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/opys-calendar/agent.md"
  }
}
```
## Documentation

### Calendar Markdown + Google Sync Skill

Use this skill to query/update the local markdown-backed calendar safely and sync it with Google Calendar.

### Source of Truth

File: calendar.md
Authoritative section: ## Event Records (fenced event YAML blocks)
Human summary section: ## Event Checklist

### Event Identity Rules

id: local identifier
externalId: stable cross-system identifier used for dedupe
googleEventIds: per-calendar Google event mapping
updatedAt: event-level timestamp for conflict resolution

Do not remove externalId from existing records.

### Preferred Interface

Use CLI from repo root:

npm run cli -- <command>

### Safe Query Flow

Run npm run cli -- summary.
If raw markdown is needed, run npm run cli -- export.

### Safe Update Flow

Add (preferred for new events):
npm run cli -- add --title "..." --start "<ISO>" --end "<ISO>" --category <id> [--shift-to-next|--allow-overlap]
Update:
npm run cli -- update --id <event_id> [fields...]
If changing --start or --end, include --shift-to-next or --allow-overlap in non-interactive runs.
Check/uncheck:
npm run cli -- check --id <event_id> or --undone
Delete:
npm run cli -- delete --id <event_id>
Add category:
npm run cli -- category-add --id <id> --label "Label" --color "#9ca3af" --description "..."
Remove category:
npm run cli -- category-remove --id <id> --reassign <id>

Conflict handling:

add and time-changing update detect overlaps with existing events.
Interactive runs can choose accept overlap, shift to next available slot, or provide a custom time.
Non-interactive runs:
--shift-to-next to auto-resolve to the next open window.
--allow-overlap to keep the requested overlapping time.

Agent snapshot output:

Every mutating CLI command writes a rolling markdown snapshot.
Default path: ./agent-snapshot.md
Override with CALENDAR_AGENT_SNAPSHOT.
Recent window defaults to 14 days and is configurable with CALENDAR_AGENT_DAYS.
Snapshot also includes upcoming 7 days when events exist.

### UI Constraints

UI does not provide add-event form/button.
Events are created via CLI agents only.
UI still supports drag/drop, resize, and check-off.

### Google Sync Flow

In UI, sign in with Google.
Select target calendar via calendar selector controls.
Click Sync Now for two-way merge.

Sync state file:

.calendar-google-sync-state.json

### Import/Export

Export: npm run cli -- export --out backup-calendar.md
Import: npm run cli -- import --in backup-calendar.md

### Notes for Agents

Keep datetimes in ISO format.
Prefer CLI operations over manual markdown edits.
If categories are changed manually in frontmatter, keep id, label, and color fields valid.

### Environment Variables

This skill uses the following environment variables (defined in .env):

Google Calendar Sync (Optional)

GOOGLE_CLIENT_ID: Google OAuth Client ID
GOOGLE_CLIENT_SECRET: Google OAuth Client Secret
GOOGLE_REDIRECT_URI: Should be http://localhost:<PORT>/api/google/auth/callback



Agent Configuration (Optional)

CALENDAR_AGENT_SNAPSHOT: Custom absolute or relative path to write the Markdown snapshot. Defaults to ./agent-snapshot.md.
CALENDAR_AGENT_DAYS: Number of historical days to include in the snapshot (defaults to 14).
PORT: API server port (defaults to 8787).
APP_BASE_URL: Base URL for the frontend UI.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: 21J3phy
- Version: 0.1.2
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/opys-calendar)
- [Send to Agent page](https://openagent3.xyz/skills/opys-calendar/agent)
- [JSON manifest](https://openagent3.xyz/skills/opys-calendar/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/opys-calendar/agent.md)
- [Download page](https://openagent3.xyz/downloads/opys-calendar)