When creating a new plugin, the logic should be implemented in a separate package stored in the packages/ directory. The package should contain all struct and interface definitions used, as well as the specific logic. It should not reference any plugin packages from the plugin/ directory as this could lead to circular dependencies between packages.
There are no special interfaces or requirements that packages in the packages/ directory are forced to follow. However, they should be independent of other packages if possible, to avoid problems due to changing interfaces in other packages.