Install
$ agentstack add skill-ohad6k-ditto-skill ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
ditto
Turn the user's own AI session logs into a you.md they can drop into .claude/skills/, .codex/skills/, AGENTS.md, or cursor rules. Runs locally, redacts secrets by default. This skill orchestrates the whole flow so the user never touches python or a manual step.
The one rule that makes this ditto (read first)
The profile MUST be mined from the user's raw session logs (the .jsonl history). NEVER build it from their AGENTS.md, CLAUDE.md, cursor rules, memory files, or a description they type — that just reflects their existing rules back at them, which is the exact opposite of the point and something /init already does. The whole value of ditto is pulling out what they never wrote down, straight from how they actually worked.
So: run ditto.py on the real logs first. If it finds no logs, STOP and ask where the logs are (--path ). Do not fall back to summarizing instructions. No mined logs → no profile. If you ever produce a profile without having run the extractor over real session .jsonl, you have failed the task — say so instead of shipping a fake.
Steps
- Extract (deterministic, safe). Run the bundled extractor. It reads the user's session logs, keeps only their own words, and redacts API keys / tokens / emails / phone numbers BEFORE anything is written. Never skip redaction.
`` python /../ditto.py --chunks 20 --out ditto-out ` If no logs are found, **STOP and ask** where their logs live (pass --path `). Do not proceed without real logs, and never build a profile from their instructions instead. The counts it prints (sessions / messages / tokens / redactions) are your proof it actually read the logs — report them; if sessions is 0, you have nothing to mine.
- Mine (fan-out). Spawn one sub-agent per file in
ditto-out/chunks/, each running the per-chunk prompt fromMINING_PROMPT.mdon its chunk. Run them in parallel. Each returns a structured profile of one slice.
- If the environment can't fan out sub-agents, process chunks sequentially instead — same prompt, one at a time.
- Reduce. Merge all the chunk reports with the reducer prompt in
MINING_PROMPT.md. Rank every trait by how many chunks independently surfaced it — high-frequency traits are the real person, one-offs are noise. Output a leanyou.md(deep quotes go in a separateyou-appendix.md, not inyou.md).
- Install + prove. The
you.mdalready starts withname:/description:frontmatter, so it's skill-ready. Place it where the user's agent actually reads it, per their tool, then verify it registered:
- Claude Code → save as
.claude/skills/you/SKILL.md. Confirm it shows in the skill list (invoke/you). For it to load in every project, put it in the user-level~/.claude/skills/you/SKILL.md. - Codex native skill - save as
~/.codex/skills/you/SKILL.md. Confirm it appears in Codex's available skills, or open a new Codex session and verifyyouis loaded before relying on it. - Codex repo context - append the body (everything below the frontmatter) to
AGENTS.mdat the repo root. Codex reads it automatically, no frontmatter needed. Use this when the profile should apply only to one repo. - Cursor → save as
.cursor/rules/you.mdc, with frontmatterdescription: act like meandalwaysApply: true, then the body. - Gemini CLI → append the body to
GEMINI.md.
Then prove it: run one real task once without the file and once with it loaded, so the user sees the agent act more like them. Do not claim it's installed until you've confirmed the agent actually picks it up.
Rules
- Local only. No network calls. The user's logs never leave their machine. Say so.
- Redaction is not optional. If the user asks for
--no-redact, warn them their secrets will appear in the corpus and any shared output. - Don't invent traits. Every line in
you.mdmust trace to something they actually wrote in the logs. Cut generic filler. - Mine the logs or stop. The profile comes ONLY from the raw session
.jsonl. Never synthesize it fromAGENTS.md/CLAUDE.md/ memory / a description — that is not ditto, it is their rules file reflected back. - Keep
you.mdlean — it loads on every task.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ohad6k
- Source: ohad6k/ditto
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.