I had two problems and two wishes, which led me to build a new tool.
Problems:
- My client wanted to remove some unused data objects and screens from an app I am working on. (It is an inherited app, with over 50 objects and over 250 scenes. I built maybe 7 objects and 10 scenes, so most of this is not my work, so I cannot rely on my memory.)
- This same client wants to fundamentally shift the data architecture, so how can I analyze the dependencies, coupling of objects, and sanity check the ripple effect of evolving the architecture of the data model.
Wishes:
- A command line tool. I still view myself as a backend engineer, so terminal and IDE’s always feel better to me than drag and drop builders. So I’d wanted a CLI to help.
- Text Output, either to share with my team or to feed into Chats/AI Agents
**The Result:**
I built a new tool in Python called knack-sleuth GitHub and PyPi links:
- GitHub - mcmasty/knack-sleuth: Investigate your Knack.app's metadata to find where data objects and fields are used throughout your application
- https://pypi.org/project/knack-sleuth/
It does loads of stuff. Lists Objects, allows to search for objects or fields, does impact analysis, app summary, and more… details in the readme. None of this groundbreaking, but it does it from the command-line / terminal.
Sadly, none of my clients wanted to share their data, so I cannot provide any sample output. If someone does’t mind public use of their metadata, DM me with an Application ID and I’ll update with sample outputs (but I’ll mask the App ID)
If you are a python programmer and you have uv installed, these are my favorite commands
uvx knack-sleuth --help
List all the objects in the database, with record count, field count, connections and coupling counts (afferent and efferent)
uvx knack-sleuth list-objects --app-id <Application ID>
Find the impact of changing a field field_116 including links to the builder pages for scenes where that field is used. include the –format markdown if a human is gonna read it…
uvx knack-sleuth impact-analysis field_116 --app-id <Application ID> --format markdown
Impact analysis also works on Object Name or Object ID.
Get a summary of the application (this is still an experiment, but it can spit out markdown for humans or JSON for machines. I’m dabbling with feeding this JSON summary into AI’s for collaboration on making changes to my knack apps… jury is still out…)
include the –format markdown if a human is gonna read it…
uvx knack-sleuth app-summary --app-id <Application ID> --format markdown
Much more information in the README, so checkout the GitHub Page above.
If you have any issues, feel free to report them on GitHub Issues.
Hope this tools helps. LMK if you have any questions.
Cheers,
Tyler
References
There are some great tools already in the forum (two I found), if wanted web-based exploration of your knack.app.
- https://find.knack.com/definitions (didn’t try this, since it requires account creation)
- https://knack-explorer.austinmobility.io
Related forum threads
