Actually, it's not universal and depends if it is B2G, B2B or B2C. The last one (B2C) is not enforced basically in EU (except Romania, but there is no EU requirement for B2C).
In some member states, like Germany, the EDIFACT format, when compliant with the EN 16931 data model, is accepted as a valid e-invoice format.
EN 16931 defines what information needs to be in an invoice (the data model), while EDIFACT INVOIC defines how that information is structured and formatted for electronic transmission (the syntax).
As far as I understand there are multiple XML invoice formats and EN 16931 accepts at least two: UBL and CII. At least in theory. I have no idea how it is going to work out in practice, but I will learn the hard way :-) I have invoicing software as side-project and I have decided to make it usable in EU.
* My 5 years old project: monorepo with backend, 2 front-ends and 2 libraries
* 10+ years old company project: about 20 various packages in monorepo
In both cases I successfully give Claude Code or OpenCode instructions either at package level or monorepo level. Usually I prefer package level.
E.g. just now I gave instructions in my personal project: "Invoice styles in /app/settings/invoice should be localized". It figured out that unlocalized strings comes from library package, added strings to the code and messages files (added missing translations), however has not cleaned up hardcoded strings from library. As I know code I have written extra prompt "Maybe INVOICE_STYLE_CONFIGS can be cleaned-up in such case" and it cleaned-up what I have expected, ran tests and linting.
I really feel the same about LLM generated code: LLM does not know what is good, it does not have `taste`. When I explain what's wrong with LLM I use the same word `taste` and it is kind of amusing that someone has the same feeling.
So why this matter if code works? If you will not look at it anymore then no problem at all, but that's definition of dead code that does not need support and will not be used anymore. I have projects that I do not support for years, but I can return to them anytime and work on them, because they age well like wine.
Well if you do it once then yes, but if you automate this process it is different. E.g. I do this with YouTube videos, because watching 14 minutes video or reading 30 seconds summary is time saver. I still watch some videos fully, but many of them are not worth it.
So in summary I think it was just part of automated process (maybe) or it will become one in the future.