tried
A log of what was already attempted in this repo, and why it didn't work.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.