Skip to content
Merged
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.4.0",
"version": "0.4.1",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
13 changes: 8 additions & 5 deletions docs/handoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ identified fresh UI control if one exists. If it does not, retain the verified
memory and report manual closeout; do not equate exiting Code, deleting a chat
or removing a transcript file with archival.

Chat without authorized local tools cannot measure or clean the Mac. Code/Cowork
local capabilities depend on actual grants. Follow the bundled cleanup reference:
inventory owned paths, verify pushed code/PR state and unique/ignored file recovery,
keep active/shared/pinned work safe, and require exact cleanup authorization.
No hooks, automatic capture, new MCP tools or public tool grants are added.
In Chat and Cowork the handoff is four steps: write the note, save it, read it
back, and archive the chat or say how to. It does not inspect tools, files, disk,
git or processes. Claude Code (or another coding agent with a local workspace)
also reads the skill's `references/coding-agent.md`: it records repository,
branch and commit state, makes code recoverable, and follows the bundled cleanup
reference only with exact cleanup authorization, keeping active, shared and
pinned work safe. No hooks, automatic capture, new MCP tools or public tool
grants are added.
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.4.0",
"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 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.4.0",
"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": {
"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.4.0",
"version": "0.4.1",
"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": "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 Cursor.",
"version": "0.4.0",
"version": "0.4.1",
"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.4.0",
"version": "0.4.1",
"displayName": "Ditto",
"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 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.4.0",
"version": "0.4.1",
"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.4.0",
"version": "0.4.1",
"author": {
"name": "Omni Aura LLC",
"email": "support@heyditto.ai",
Expand Down
2 changes: 1 addition & 1 deletion plugins/ditto/.openai-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "ditto",
"version": "0.4.0",
"version": "0.4.1",
"description": "Ditto memory for everyday life, business and engineering: recall and save memories, keep decisions and meetings, plan weeks, trips and meals, debug, test and review code, and hand off chats.",
"extensions": {
"com.openai": {
Expand Down
14 changes: 10 additions & 4 deletions plugins/ditto/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,16 @@ a relaxed evening, with a few discoveries."

Use `/handoff` for verified private
continuation notes and supported host archival, including explicitly selected
bulk closeout. Disk assessment requires local tools; cleanup requires exact
authority and verified code/file recovery. A memory summary is not a file backup.
If this host cannot archive, the skill saves the handoff and explains the manual
closeout step. Exiting a CLI session is not an archive operation.
bulk closeout. In a chat app it only writes the note, saves it, reads it back
and closes the chat. Coding agents with a local workspace also make code
recoverable and, with exact authority, clean up their own files; those steps
live in the skill's `references/coding-agent.md`. A memory summary is not a file
backup. If this host cannot archive, the skill saves the handoff and explains the
manual closeout step. Exiting a CLI session is not an archive operation.

Every skill works in a chat app. Steps that need a shell, such as git, test
runners, disk checks and deploy probes, sit in a skill's
`references/coding-agent.md`, which chat hosts skip.

The plugin respects your current instructions, private capture preferences,
source authorship and actual tool grants. The plugin does not automatically save
Expand Down
19 changes: 12 additions & 7 deletions plugins/ditto/shared-skills.lock.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,37 @@
{
"schema_version": 1,
"source_repository": "https://github.com/ditto-assistant/ditto-skills",
"source_commit": "8c61acf273526bd5c0bb9b4648b1091354dcd56f",
"source_commit": "f1b8c1bcd5f246dd497693a36fdafba5be23d080",
"host": "plugins",
"core_sha256": "5912af5483c469ec15db27858122fc9128fc25cd239202c0fdd9727de7dd5f6b",
"adapter_sha256": "7cd895ab3feb0581e7e782de46b8b8220e4281a9ebfe6f6b651753e3a545bac1",
"generator_sha256": "210bce4b3167244d234ee0cc0e5adf771a72ce78a99675ad9dcf103969018d12",
"skill_sha256": "dc4a46fc6de30ceac400ced65b122895738757cdcdaf1be529d63bec165e5835",
"files_sha256": {
"plugins/ditto/skills/code-review/SKILL.md": "6696e1a3d3887ad8d5e115e463d1ad0f5652db3032ad9d425584460c0dbe4a76",
"plugins/ditto/skills/code-review/SKILL.md": "7d14eeb3b40ed330ad2dd4078a545d4539c96242bcd9f1ce1e130eb2bac0dd9f",
"plugins/ditto/skills/code-review/references/coding-agent.md": "6bdadaf39fd80e797236e4f429b655c8563f3451cb490f975e0e4d89f28df6f5",
"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/diagnose-bug/SKILL.md": "a8209a3c7adab8925c520586353eda235ef44663c17ebfc2025156ef7f221f29",
"plugins/ditto/skills/diagnose-bug/references/coding-agent.md": "cf3a3daa29e74731e9c3763130c979bae73922229ec22f018d9c280c08962719",
"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/SKILL.md": "7ff62ccbee9bac8359db9af178f295b4398e81983c4ccb915d7e4927b379d334",
"plugins/ditto/skills/handoff/references/coding-agent.md": "da33714119762443fc0aee9633c5da828e9367f650a304c438ec486c94f97a4d",
"plugins/ditto/skills/handoff/references/workspace-cleanup.md": "43feda4be882ce38e165fdc8ae650cc32a645a39cb3910241d526ff6e8b91f76",
"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/tdd/SKILL.md": "041fd8a54d1abb754a1cbf05ae83bb879e07321977fc3e244c11ca66837d30a2",
"plugins/ditto/skills/tdd/references/coding-agent.md": "539a6e52b337f30e9cd458a4dede97e368a4f0c7fadf142a7db3f738e213e457",
"plugins/ditto/skills/tidy-memory/SKILL.md": "496c0cbeabb76e4874f106f91ec14221b80c8111e28af814daa36c52487ea7f9",
"plugins/ditto/skills/verify-done/SKILL.md": "5cd669a2157d9723c19449571aafc8cbe880a42bf54bc7a72e5119f9318c858c",
"plugins/ditto/skills/verify-done/SKILL.md": "905647d40b04d167d7286c02c001e0107b7aa704f7cdaa4c8042d56d9bc6301d",
"plugins/ditto/skills/verify-done/references/coding-agent.md": "ed7e11eff722a493470989622b3e681e3f9f41e129a60deb38aacddcdeb43d80",
"plugins/ditto/skills/weekly-review/SKILL.md": "efecbfcc90f68222ce1072272063a4ea7111a69bc636f0273814bc060aaa8753",
"plugins/ditto/skills/write-spec/SKILL.md": "3d93adbf733f71dc14cbbf07f98865c766fcc4c837d1e01e3785978e630dad1d"
}
Expand Down
20 changes: 12 additions & 8 deletions plugins/ditto/skills/code-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,20 @@ 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.
If this host gives you a local shell and the change is in a repository you can
open, also read [coding-agent.md](references/coding-agent.md). In a chat app,
skip it and review what the user shares.

## 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 the diff the user pasted, uploaded or linked through a connected tool,
with as much surrounding code as you can see. 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. If a finding depends on code you
cannot see, ask for that file or mark the finding as a question rather than
guessing. Say whether each issue is new in this change or already in the code it
modifies; when the shared context cannot tell, say so.

## Review in passes

Expand All @@ -34,8 +39,7 @@ someone else's work.

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.
when you are unsure.

## Report

Expand Down
13 changes: 13 additions & 0 deletions plugins/ditto/skills/code-review/references/coding-agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Code review: coding-agent additions

Read this only when you have a local shell and the change is in a repository you
can open. In a chat app, skip it.

- Build the diff yourself against the merge base of the branch the change will
merge into, not an older branch, or you will review someone else's work.
- Read whole files around each hunk, plus callers and tests of what changed.
- Check whether each issue is new in this change or already on the base branch,
and say which.
- Run the project's own tests, type checker or linter when that is cheap and
confirms or refutes a finding. Use the commands the repository documents.
- Do not edit, commit or push while reviewing unless the user asks for fixes.
31 changes: 18 additions & 13 deletions plugins/ditto/skills/diagnose-bug/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ description: Find the root cause of a bug or slowdown with a reproduce-and-test

# Diagnose a bug

Find the cause before changing code. A fix without a cause is a guess, and a
Find the cause before changing anything. 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.
If this host gives you a local shell and the code is in a repository you can
run, also read [coding-agent.md](references/coding-agent.md). In a chat app,
skip it: the user runs each step and shares the result with you.

## 1. Recall

Expand All @@ -19,31 +22,33 @@ 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.
sequence that shows the failure, with the exact environment (versions or
branch, data, settings). If the bug is intermittent, find out how often it
happens so a fix can later be told from luck. If it cannot be reproduced, say so and gather evidence
(logs, screenshots, the user's exact steps) instead of guessing. When the user is
the one running things, give one exact step at a time and ask for its output.

## 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.
comparison between a known-good and known-bad version, a stripped-down 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.
the cause is introduced, and disappears when it is removed.

## 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.
version and passes on the fixed one, and see it run both ways (in a chat app,
ask the user to run it before and after the fix). Remove any temporary logging added
to test hypotheses. 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.
Report the symptom, root cause, evidence, fix and remaining risk, keeping what
was 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.
15 changes: 15 additions & 0 deletions plugins/ditto/skills/diagnose-bug/references/coding-agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Diagnose a bug: coding-agent additions

Read this only when you have a local shell and can run the code. In a chat app,
skip it.

- Run the reproduction yourself and record the command, branch, commit, data
and flags. For an intermittent failure, run it enough times to state a rate.
- Use `git bisect` (or a manual binary search over commits) between a
known-good and known-bad version when the regression window is unclear.
- Add temporary logging or assertions to discriminate hypotheses, and remove
them before you finish.
- Write the regression test in the project's existing test setup and run it
both ways: red on the unfixed code, green on the fix.
- Reproduce a suspected regression on the base branch in a separate checkout
before believing your own change caused it.
Loading
Loading