Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .kimi-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.antigravity-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "ditto",
"displayName": "Ditto",
"version": "0.3.8",
"version": "0.3.9",
"description": "Search and save Ditto memories through hosted MCP, curate music, and hand off chats with verified continuation notes. Archival and owned workspace cleanup depend on host capabilities and authorization. Sign in through Antigravity.",
"logo": "assets/icon.png",
"suggestedPrompts": [
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"description": "Search and save Ditto memories through hosted MCP, curate music, and hand off chats with verified continuation notes. Archival and owned workspace cleanup depend on host capabilities and authorization. Sign in through Claude.",
"author": {
"name": "Omni Aura LLC",
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "ditto",
"displayName": "Ditto",
"description": "Search and save Ditto memories through hosted MCP, curate music, and hand off chats with verified continuation notes. Archival and owned workspace cleanup depend on host capabilities and authorization. Sign in through Cursor.",
"version": "0.3.8",
"version": "0.3.9",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai"
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.github/plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"displayName": "Ditto",
"description": "Search and save Ditto memories through hosted MCP, curate music, and hand off chats with verified continuation notes. Archival and owned workspace cleanup depend on host capabilities and authorization. Sign in through GitHub Copilot.",
"author": {
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.grok-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.kimi-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ditto",
"version": "0.3.8",
"version": "0.3.9",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
23 changes: 20 additions & 3 deletions plugins/ditto/shared-skills.lock.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
{
"schema_version": 1,
"source_repository": "https://github.com/ditto-assistant/ditto-skills",
"source_commit": "b4065445c5bc4d637503f0982119b957686dbf50",
"source_commit": "6adea513b2633efc05f2f34d9f655adceeca2c37",
"host": "plugins",
"core_sha256": "5912af5483c469ec15db27858122fc9128fc25cd239202c0fdd9727de7dd5f6b",
"adapter_sha256": "c44c1d6054861d915c77f6333f1f972b9c3144cbc8d3c387988c3af9b917d9a4",
"generator_sha256": "f0fe5c02da33e861c0962230d0d1486a0542b915808c33b8bd8d4350012467db",
"generator_sha256": "210bce4b3167244d234ee0cc0e5adf771a72ce78a99675ad9dcf103969018d12",
"skill_sha256": "d74135ea9af4d33fe1fb55727b3dbe93e448449ac124f95b333f0aebfdf880ed",
"files_sha256": {
"plugins/ditto/skills/code-review/SKILL.md": "6696e1a3d3887ad8d5e115e463d1ad0f5652db3032ad9d425584460c0dbe4a76",
"plugins/ditto/skills/curate-music/SKILL.md": "b498f8639aeb64e59f88830ac162a894f9f128b7e1f2db6a7c528092904c1eb4",
"plugins/ditto/skills/curate-music/references/youtube-music.md": "e763797cc7821114682c7b92cec6919e6f957792cdc54756f670c7086b09e52c",
"plugins/ditto/skills/daily-brief/SKILL.md": "aa4b1398e2b1fb1ad0b6588ff92e44e07b96316204544429c7582f56828e6dfd",
"plugins/ditto/skills/decision-log/SKILL.md": "fe131adeab044ebef9ec0d98be607629cdf7acf27b65d344ac6a01b333a52985",
"plugins/ditto/skills/diagnose-bug/SKILL.md": "b1899c41cc9362b41fbe5bd069352cb1ddc8e209bb9e33e0558fd0aef29b3ab6",
"plugins/ditto/skills/gift-ideas/SKILL.md": "f8c60204bb8fb8156e1a6d2e7130009a905d6cb2b3dfecf5098f1983b58b1db1",
"plugins/ditto/skills/grill-me/SKILL.md": "14e9e774d33286f0a51fc8521dd9ed479e7eccbd5567697da3a6586b8564cf2a",
"plugins/ditto/skills/handoff/SKILL.md": "84624fa46d8740f0dc0a26055dd427be5aa664edeac5193542b256ca2c3b733d",
"plugins/ditto/skills/handoff/references/workspace-cleanup.md": "be4d5ec45fdaf7ed5a16c00bec7b013a61b86f26084cfaeddc39f430c4c92a53"
"plugins/ditto/skills/handoff/references/workspace-cleanup.md": "be4d5ec45fdaf7ed5a16c00bec7b013a61b86f26084cfaeddc39f430c4c92a53",
"plugins/ditto/skills/launch-post/SKILL.md": "1c634996254a9a48df0b3f6ec8ae8aa094231286927686bccb82354a06b90307",
"plugins/ditto/skills/learn-anything/SKILL.md": "997550bbdb5354c2e0e95ad358a69bd5a3f2209f22a401c1eac64bfbb9a6d9f0",
"plugins/ditto/skills/plan-meals/SKILL.md": "ca6959b54c5008e23c902c1cc8785fc63047f78988ed334bdc94fd46ccda8787",
"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": "95dcdd4fc7eab08662a8cf37ce10efc26aafde87eda94c714e9c66977fc9ee18",
"plugins/ditto/skills/tidy-memory/SKILL.md": "496c0cbeabb76e4874f106f91ec14221b80c8111e28af814daa36c52487ea7f9",
"plugins/ditto/skills/verify-done/SKILL.md": "5cd669a2157d9723c19449571aafc8cbe880a42bf54bc7a72e5119f9318c858c",
"plugins/ditto/skills/weekly-review/SKILL.md": "efecbfcc90f68222ce1072272063a4ea7111a69bc636f0273814bc060aaa8753",
"plugins/ditto/skills/write-spec/SKILL.md": "3d93adbf733f71dc14cbbf07f98865c766fcc4c837d1e01e3785978e630dad1d"
}
}
47 changes: 47 additions & 0 deletions plugins/ditto/skills/code-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: code-review
description: Review a diff for correctness bugs first, applying the team's conventions remembered in Ditto.
---

# Code review

Find the problems that would hurt users or maintainers, and say each one so the
author can act on it. Correctness first, clarity second, style last.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## Gather context

Read the full diff and enough surrounding code to understand each change. Read
the description or linked issue to learn the intent. Search Ditto for the team's
review conventions, past review decisions about this area and known pitfalls; a
convention the team agreed on outranks your personal preference. Compare against
the branch the change will merge into, not an older one, or you will review
someone else's work.

## Review in passes

1. **Correctness.** Wrong logic, missing cases, off-by-one, nil or empty inputs,
error paths, concurrency, resource leaks, unsafe input handling, permission
checks, data migrations and backwards compatibility.
2. **Tests.** Do the tests cover the new behavior, and could they fail if the
code were wrong?
3. **Design.** Unneeded complexity, duplication of an existing helper, names that
mislead, and changes in the wrong layer.
4. **Style.** Only what the project's formatter and linter do not already catch.

## Verify before reporting

For each candidate finding, trace the actual code path and try to construct the
failing input. Drop findings you cannot support. Mark a finding as a question
when you are unsure. Check whether an issue is new in this change or already on
the base branch, and say which.

## Report

List findings most severe first. Each one names the file and line, the problem,
a concrete failure scenario and a suggested fix. Then give a short verdict. Do
not post comments, approve or request changes on a hosted review unless the
user asks you to. When the review settles a convention ("we always validate at
the handler"), offer to save it to Ditto, in the team's space if the user has
one.
43 changes: 43 additions & 0 deletions plugins/ditto/skills/daily-brief/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: daily-brief
description: Start the day with priorities, commitments and open loops from Ditto memory, optionally every morning.
---

# Daily brief

A short morning page that answers "what matters today?" from what Ditto already
knows, so the user does not have to reconstruct it.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## Build the brief

Search Ditto for what is relevant to today: priorities the user set, deadlines
and commitments due soon, promises made to other people, open loops waiting on
someone, and personal reminders (birthdays, appointments, habits the user is
building). Read a connected calendar or task list when the user has one and
asks you to use it. Fetch the records you rely on and check their dates; a
"due Friday" saved three weeks ago may already be past.

Keep it to one screen:

- **Top three:** the most important outcomes for today, with a first step each.
- **Commitments:** meetings and promises with times and people.
- **Waiting on:** what others owe the user, and when to nudge.
- **Don't forget:** small personal items.

Mark anything inferred. If memory is thin, say so and ask the user for today's
priorities instead of padding the brief.

## End of day (optional)

When the user comes back with a recap, update the records: mark finished items,
carry unfinished ones forward and save new commitments. Save only what the user
confirms.

## Every morning

Offer a Ditto workflow that writes this brief on a schedule the user picks, in
their time zone, delivered where they choose. Create it only on the user's yes;
anything that would send or post on their behalf needs their explicit approval
when the workflow is created.
44 changes: 44 additions & 0 deletions plugins/ditto/skills/decision-log/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: decision-log
description: Record decisions with rationale and owner in Ditto, shared with the team, and answer why they were made.
---

# Decision log

Teams forget why they decided things, then re-argue them. Record each decision
once, with enough context that someone who was not in the room can understand
it, and make it findable when the question comes back.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## Record a decision

Capture these fields from the conversation, asking only for what is missing:

- **Decision:** one sentence, stated as what we will do.
- **Context:** the problem and the constraints at the time.
- **Alternatives:** what else was considered and why it lost.
- **Owner and date:** who decided, and when it takes effect.
- **Revisit when:** the condition that would reopen it, if any.

Keep proposals and decisions distinct: if it is not decided yet, record it as an
open question with an owner, not as a decision.

Before saving, search Ditto for earlier decisions on the same topic. If this one
replaces an earlier decision, say so in the new record and update the old one to
point at it rather than leaving two live answers.

## Where it goes

A personal decision goes to the user's main memory. A team decision belongs in
the team's or company's Ditto space, so teammates' agents can recall it. Write to
a shared space only when the user asks for it and their access allows it; never
widen who can see a record without saying so first. Check the save receipt and
give the user the reference.

## Answer "why did we...?"

Search the decision records and related memories, fetch the full records, and
answer with the decision, its rationale and its date, citing the records. If the
records disagree, show both and their dates. If there is no record, say so
rather than reconstructing a rationale.
49 changes: 49 additions & 0 deletions plugins/ditto/skills/diagnose-bug/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: diagnose-bug
description: Find the root cause of a bug or slowdown with a reproduce-and-test loop, using past incidents in Ditto.
---

# Diagnose a bug

Find the cause before changing code. A fix without a cause is a guess, and a
guess that happens to make the symptom disappear is the most expensive kind.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## 1. Recall

Search Ditto for the error text, the component and earlier incidents with similar
symptoms. A previous root cause, a known flaky dependency or a recorded gotcha
can save hours. Treat a recalled cause as a hypothesis to test, not an answer.

## 2. Reproduce

Get a reliable reproduction before anything else: the smallest input, command or
sequence that shows the failure. Record the exact environment (versions, branch,
data, flags). If the bug is intermittent, measure how often it happens so you can
later tell a fix from luck. If you cannot reproduce it, say so and gather
evidence (logs, traces, the user's exact steps) instead of guessing.

## 3. Hypothesize and test

List the candidate causes and, for each, the observation that would rule it in
or out. Test the cheapest discriminating one first. Change one thing at a time.
Prefer evidence that can fail: a log line that would show a different value, a
bisect between a known-good and known-bad version, a stripped-down test case.
A check that could only ever pass proves nothing.

When a hypothesis survives, confirm it from both sides: the failure appears when
you introduce the cause, and disappears when you remove it.

## 4. Fix and guard

Fix the cause, not the symptom. Add a regression test that fails on the unfixed
code and passes on the fixed code; run it both ways. Remove temporary
instrumentation. If the fix is a workaround, say so plainly.

## 5. Report and remember

Report the symptom, root cause, evidence, fix and remaining risk, keeping what you
observed separate from what you inferred. Offer to save the incident to Ditto
(symptom, cause, fix, how it was found) so the next occurrence starts from it.
Save only when the user agrees, and exclude secrets and customer data.
41 changes: 41 additions & 0 deletions plugins/ditto/skills/gift-ideas/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
name: gift-ideas
description: Suggest thoughtful gifts from what Ditto remembers about a person, and track occasions and past gifts.
---

# Gift ideas

The best gifts show you were paying attention. Ditto remembers the details: the
hobby a friend mentioned, the book a parent wanted, what you gave last year.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## Recall the person

Ask who the gift is for, the occasion, the budget and the deadline. Search Ditto
for that person: interests, recent life events, things they said they wanted or
loved, sizes or preferences, and gifts already given. Fetch the memories you
use. Treat these as the user's own notes about someone else: use them only to
help the user, and keep them out of public searches and anything shared.

## Suggest

Offer three to five ideas across types (an object, an experience, something
handmade or personal), each with:

- why it fits this person, tied to a specific remembered detail;
- a price range and where to find it, verified with a current search;
- lead time, so it arrives in time.

Avoid repeating past gifts and anything the memory says they dislike. If memory
is thin, ask two or three questions about the person rather than guessing.

## Remember

Offer to save the choice, the occasion and the date, so next year's suggestions
avoid repeats. Offer to save new details the user mentions ("she's learning
pottery now"). Buy only when the user asks and a connected tool supports it,
confirming the item and total first.

Offer a Ditto workflow that reminds the user a couple of weeks before important
dates with fresh ideas. Set it up only on the user's yes.
46 changes: 46 additions & 0 deletions plugins/ditto/skills/grill-me/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: grill-me
description: Interview the user about a plan until every open decision is resolved, recalling past decisions from Ditto.
---

# Grill me

Sharpen a plan by asking the hard questions before anyone builds it. The goal is
shared understanding: by the end, you and the user agree on what is being built,
why, and what was decided along the way.

Use the bundled `ditto-memory` skill for connection, recall and capture rules.

## Before the first question

Search Ditto for the project, the people involved and earlier decisions on the
same topic. Fetch the full memories you rely on. Open by stating what you already
know, so the user does not repeat it, and name any earlier decision the new plan
appears to contradict. If a repository or document is in scope, read it first:
answer from the material whatever the material can answer.

## The interview

Walk the decision tree one branch at a time. Ask one question per message, and
attach your recommended answer with a short reason. Prefer questions whose answer
changes the design: scope, users, constraints, failure modes, data ownership,
cost, rollout and how success is measured. When an answer opens a sub-decision,
resolve it before moving on. Keep a running list of open questions and say how
many remain.

Push back when an answer is vague ("it should be fast"), conflicts with an earlier
answer or with a remembered decision, or quietly assumes something nobody has
checked. Do not accept "we'll figure it out later" for a decision that blocks
building; record it as an explicit open question with an owner instead.

Stop when the open list is empty or the user calls time. Do not start
implementing during the interview.

## Close out

Summarize the plan as decisions, each with its rationale, followed by any open
questions and their owners. Offer to save the summary to Ditto as one decision
record, linked to related memories returned by the save. Save only on the user's
yes, check the receipt, and update an existing record rather than duplicating it.
For a team project, suggest the `decision-log` skill to share it in the team's
space.
Loading
Loading