Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

In addition to having long system prompts, you also need to provide agents with the right composable tools to make it work.

I’m having reasonable success with these seven tools: read, write, diff, browse, command, ask, think.

There is a minimal template here if anyone finds it useful: https://github.com/aperoc/toolkami



This is really cool, thanks for sharing.

uv with PEP 723 inline dependencies is such a nice way to work, isn’t it. Combined with VS Code’s ‘# %%’-demarcated notebook cells in .py files, and debugpy (with a suitable launch.json config) for debugging from the command line, Python dev finally feels really ergonomic these last few months.


Yes, uv just feels so magical that I can't stop using it. I want to create the same experience with this!


> Combined with VS Code’s ‘# %%’-demarcated notebook cells in .py files

What do you mean by this?


It’s a lighter-weight “notebook syntax” than full blown json based Jupyter notebooks: https://code.visualstudio.com/docs/python/jupyter-support-py...


Yep, lets you use normal .py files instead of using the .ipynb extension. You get much nicer diffs in your git history, and much easier refactoring between the exploratory notebook stage and library/app code - particularly when combined with the other stuff I mentioned.


Maybe you could ask one of the agents to write some documentation?


For sure! the traditional craftsman in me still like to do some stuff manually though haha


Once I gave claude read only access to the command line and also my local repos, i found that was enough to have it work quite well... I start to wonder if all this will boil down to simple understanding of some sort of "semantic laws" still fuzzily described... I gotta read chomsky...


Where does one find the tool prompts that explains to the LLM how to use those seven tools and what each does? I couldn’t find it easily looking through the repo.



Thank you. I find in interesting that the LLM just understands intuitively from the english name of the tool/function and it’s argument names. I had imagined it might need more extensive description and specification in its system prompt, but apparently not.


mplewis thanks for helping to point those out!


I find it very interesting that the LLM is told so little details but seems to just intuitively understand based on the english words used for the tool name and function arguments.

I know from earlier discussions that this is partially because many LLMs have been fine tuned on function calling, however the model providers don’t share this training dataset unfortunately. I think models that haven’t been fine tuned can still do function calling with careful instructions in their system prompt but are much worse at it.

Thank you for comments that help with learning and understanding MCP and tools better.


Related. Here is info on how custom tools added via MCP are defined, you can even add fake tools and trick Claude to call them, even though they don't exist.

This shows how tool metadata is added to system prompt here: https://embracethered.com/blog/posts/2025/model-context-prot...


You can see it in the cline repo which does prompt based tooling, with Claude and several other models.


Really interesting, thank you


Hope you find it useful, feel free to reach out if you need help or think it can be made better.


> 18 hours ago

you just released this ? lol good timing


I did! Thanks for responding and continue to do your great work, I'm a fan as a fellow Singaporean!




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: