Really liking what you all are doing with Agentic ColdBox. I was reading through the docs and got a little confused about the recommended Git strategy for the new .ai/ folder.
From what I can tell, the .ai/ directory contains a mix of generated framework/module resources and project-specific custom resources.
The docs mention committing things like:
.ai/guidelines/custom/
.ai/skills/custom/
.ai/manifest.json
But I wasn’t sure if that means we should be ignoring the rest of .ai/ , or committing the whole folder.
For example, should folders like these normally be ignored?
.ai/guidelines/core/
.ai/guidelines/modules/
.ai/skills/core/
.ai/skills/modules/
It would be really helpful if the docs included a sample .gitignore so there is a clear best practice.
Right now I wasn’t sure if the recommendation is:
Commit the whole .ai/ folder
Only commit custom content and manifest.json
Something in between
Could someone clarify what the intended best practice is?
The following folders should be treated similar to Forgebox modules because they will receive periodic updates from their maintainers, therefore they should be ignored. I expect users will periodically run coldbox ai refresh to update them. side note: I actually expected the command to be coldbox ai update, similar to updating modules. Maybe there could be an alias to keep the original convention?
The following folders are MINE, because they contain skills and guidelines for my specific app:
.ai/skills/custom/
.ai/skills/overrides/ (folder not created by default, btw)
.ai/guidelines/custom/
.ai/guidelines/overrides/ (folder not created by default, btw)
Therefore, a .gitignore example would look like this:
I intentionally left out manifest.json in my example above because when you run coldbox ai refresh it rebuilds the manifest based on all skills and guidelines, including custom ones, which is great!
One thing I did notice is that whenever you run coldbox ai refresh it will overwrite your CLAUDE.md file. I think this might be a bug since that file is a “living document” meant to be specific to your app. I’ll file an issue on the CLI Github repo.
Hopefully I interpreted the intent of the docs correctly. If so, maybe it would help to provide the above sample .gitignore with comments to make it clearer?