Skip to main content

tried

A log of what was already attempted in this repo, and why it didn't work.

CI PyPI Zero dependencies MIT

You spend an hour discovering that an approach doesn't work. The session ends. Tomorrow the agent reaches for the same approach, because the reason it failed lived in a conversation that no longer exists.

tried keeps that reason in the repository, next to the code, where the next session and the next person both find it.

tried add "sqlite WAL for the job queue" --failed \
  --because "writers lock each other out above ~20 req/s" --tag queue

tried check "sqlite WAL"
# BU ALLAQACHON SINALGAN: ...  → exit 3

tried check exits 3 when the ground was covered before, so an agent can branch on it and go a different way instead of repeating the work.

Install

pipx install tried

As an Agent Skill, so agents use it on their own:

npx skills add Viltrumlik/tried

As a Claude Code plugin — this also installs a SessionStart hook that puts the recent dead ends in front of the agent before it starts:

/plugin marketplace add Viltrumlik/tried
/plugin install tried@tried

Commands

Command What it does
tried add TEXT --because WHY [--failed|--worked|--partial] [--tag T] Record an attempt
tried check TEXT Exit 3 if this was tried before, 0 if clear
tried list [-n 10] [--failed|--worked] Recent entries, newest first
tried show ID One entry in full
tried rm ID Remove a mistake

Every command takes --json.

Exit codes: 0 ok · 1 error · 2 usage error · 3 prior attempts found.

Where it lives

.tried.jsonl at the repo root, and it is meant to be committed. This is knowledge about the project, not a cache — it should travel with the code and show up in review.

The file is append-only, which keeps git diffs clean: two people writing at once conflict only on the last lines, and the fix is to keep both.

Outside a git repo it falls back to the current folder. TRIED_FILE overrides the path.

Why --because matters

"didn't work" helps nobody. The reason is the whole value:

x 4f2a1c8b  sqlite WAL for the job queue
     chunki: writers lock each other out above ~20 req/s
     3d oldin · Alisher · #queue

A year later, that line is the difference between an hour lost and a minute saved.

What not to record

  • Ordinary bugs you fixed — this is for approaches considered and rejected
  • Anything secret: the file is committed and everyone reads it
  • Running commentary — one entry per real decision

Development

python3 -m unittest discover -s tests -v

CI runs on Ubuntu, macOS and Windows with Python 3.9 through 3.13.

skills/tried/
├── SKILL.md              # what agents read
└── scripts/
    ├── tried.py          # the CLI: one file, zero dependencies
    └── tried_hook.py     # SessionStart hook
hooks/hooks.json          # registers the hook for the plugin
pyproject.toml            # the PyPI package
tests/                    # end-to-end tests against real files

License

MIT © Alisher Muhammadaliyev (@Viltrumlik)

Metadata

Release files for tried 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tried 0.1.0
File Size Uploaded Provenance Actions
tried-0.1.0.tar.gz 12.2 kB Without provenance Details for tried-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tried 0.1.0
File Interpreter ABI Platform Actions
tried-0.1.0-py3-none-any.whl Python 3 none any Details for tried-0.1.0-py3-none-any.whl

Total release size: 22.1 kB

Release files / tried-0.1.0.tar.gz

Download URL tried-0.1.0.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e1a25b015539c992532637bda2b35fd06413c73661f32358c5817b151693b69a
BLAKE2b-256 checksum
How to use checksums
478e46318dd439f0ecbed59f22f3212a1594d57a840f8e2d7677a69cb3d6d320
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2

Release files / tried-0.1.0-py3-none-any.whl

Download URL tried-0.1.0-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ef3f77765f6ec7be2dda60318fac05e4b93f3d3bae3bce698a00e4996e03c23
BLAKE2b-256 checksum
How to use checksums
c428f7de3a5c15c5dfea97aacd67e14ef32e2fddbda86fd333229119d91ea244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2

Security for tried 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page