diff --git a/plugins/ditto/.claude-plugin/plugin.json b/plugins/ditto/.claude-plugin/plugin.json index 1d88f14..b4f5ffb 100644 --- a/plugins/ditto/.claude-plugin/plugin.json +++ b/plugins/ditto/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "$schema": "https://anthropic.com/claude-code/plugin.schema.json", - "name": "ditto", + "name": "heyditto", "version": "0.4.1", "description": "Ditto memory through hosted MCP, with 20 skills for life, business and engineering: recall and save context, keep decisions, meetings and weekly reviews, debug, test and review code, plan days, trips and meals, curate music, and hand off chats. Archival and owned workspace cleanup depend on host capabilities and authorization. Sign in through Claude.", "author": { diff --git a/plugins/ditto/README.md b/plugins/ditto/README.md index fe0a7e6..03abbab 100644 --- a/plugins/ditto/README.md +++ b/plugins/ditto/README.md @@ -51,6 +51,27 @@ come first, browser/computer controls next, and web search last for recordings, official links and an ordered plan. Saving playlists or changing playback requires separate music capabilities; confirm the actual result before claiming success. +## Other services and host capabilities + +The Ditto MCP server supplies memory access. Skills may also use separately +connected services or host tools when available and authorized: + +- Music accounts: Spotify, Apple Music, YouTube Music, Tidal, Deezer, Amazon + Music, SoundCloud, or another service the user selects. The music skill may + read a saved library and, with separate capability, create playlists or control + playback. +- Web search for current public facts, sources, travel and meal planning, and + music links; browser or computer control for music sites and other user + requested UI work. +- Connected calendars, task lists, and user named research sources for briefs, + meetings, and daily planning. Connected shopping, booking, publishing, and + messaging services are used only for the corresponding user requested action. +- Host repository, test runner, filesystem, and chat archive controls for + engineering and handoff skills, subject to the host's grants and user approval. + +These are host capabilities, not servers or credentials bundled with this plugin. +Availability depends on the host and the user's connections. + Try: "Curate a playlist on my preferred music service using my Ditto memories for a relaxed evening, with a few discoveries." diff --git a/plugins/ditto/shared-skills.lock.json b/plugins/ditto/shared-skills.lock.json index 4064629..ea307c9 100644 --- a/plugins/ditto/shared-skills.lock.json +++ b/plugins/ditto/shared-skills.lock.json @@ -27,7 +27,7 @@ "plugins/ditto/skills/plan-trip/SKILL.md": "ed7aac4da4219030b40f50ecbfd726fa3adbf85042387a608f0b0c90984caf3e", "plugins/ditto/skills/prep-meeting/SKILL.md": "13e49ec46686cee975fb3ab13fc86c8de01378e4a749415efdc0ba9efb08f83a", "plugins/ditto/skills/research-brief/SKILL.md": "3fa3d9c865b48f7d3a6aa76e5570619983afb8adac783e56c6c9a4438ad31780", - "plugins/ditto/skills/tdd/SKILL.md": "041fd8a54d1abb754a1cbf05ae83bb879e07321977fc3e244c11ca66837d30a2", + "plugins/ditto/skills/tdd/SKILL.md": "02a00cacc62f4c6da9f5add20ff7bce6b8140162021d0af9365dff36887fe6d7", "plugins/ditto/skills/tdd/references/coding-agent.md": "539a6e52b337f30e9cd458a4dede97e368a4f0c7fadf142a7db3f738e213e457", "plugins/ditto/skills/tidy-memory/SKILL.md": "496c0cbeabb76e4874f106f91ec14221b80c8111e28af814daa36c52487ea7f9", "plugins/ditto/skills/verify-done/SKILL.md": "905647d40b04d167d7286c02c001e0107b7aa704f7cdaa4c8042d56d9bc6301d", diff --git a/plugins/ditto/skills/tdd/SKILL.md b/plugins/ditto/skills/tdd/SKILL.md index 4c79e3a..cef6122 100644 --- a/plugins/ditto/skills/tdd/SKILL.md +++ b/plugins/ditto/skills/tdd/SKILL.md @@ -9,6 +9,11 @@ Write the test that describes the behavior, watch it fail for the right reason, make it pass with the simplest change, then clean up. Repeat in small steps. Use the bundled `ditto-memory` skill for connection, recall and capture rules. +This skill describes work the host may perform in a user's repository. Running +tests requires a separately available, authorized host execution tool; the +Ditto plugin bundles no executable code or test runner, and its declared MCP +server is used only for memory. If the host lacks execution access, describe +the tests to run and leave their result unverified. If this host gives you a local shell and a repository you can run, also read [coding-agent.md](references/coding-agent.md). In a chat app, skip it: give the user the test first and ask for the runner's red output, then the code and its diff --git a/scripts/validate_package.py b/scripts/validate_package.py index d971511..bd5c9d3 100644 --- a/scripts/validate_package.py +++ b/scripts/validate_package.py @@ -97,8 +97,9 @@ def check_mcp_file(path, plugin): def check_manifest(host, manifest, plugin, folder): - if manifest.get("name") != plugin: - raise ValueError(f"{host} manifest name must be {plugin}") + expected_name = "heyditto" if host == "claude" and plugin == "ditto" else plugin + if manifest.get("name") != expected_name: + raise ValueError(f"{host} manifest name must be {expected_name}") if RUNTIME & manifest.keys(): raise ValueError(f"Unexpected runtime component in MCP-only {host} manifest") mcp = manifest.get("mcpServers")