code: static Collection<RoboconfError> validateRecipesSpecifics( MavenProject project, ApplicationTemplate tpl, boolean official ) {
  
  		Collection<RoboconfError> result = new ArrayList<> ();
  		if( ! project.getArtifactId().equals( project.getArtifactId().toLowerCase()))
  			result.add( new RoboconfError( ErrorCode.REC_ARTIFACT_ID_IN_LOWER_CASE ));
  
  		if( ! tpl.getRootInstances().isEmpty())
  			result.add( new RoboconfError( ErrorCode.REC_AVOID_INSTANCES ));
  
  		if( official && ! project.getGroupId().startsWith( Constants.OFFICIAL_RECIPES_GROUP_ID ))
  			result.add( new RoboconfError( ErrorCode.REC_OFFICIAL_GROUP_ID ));
  
  		if( ! project.getArtifactId().equals( project.getArtifactId()))
  			result.add( new RoboconfError( ErrorCode.REC_NON_MATCHING_ARTIFACT_ID ));
  
  		File[] files = project.getBasedir().listFiles();
  		boolean found = false;
  		if( files != null ) {
  			for( int i=0; i<files.length && ! found; i++ )
  				found = files[ i ].getName().matches( "(?i)readme(\\..*)?" );
  		}
  
  		if( ! found )
  			result.add( new RoboconfError( ErrorCode.REC_MISSING_README ));
  
  		return result;
  	}
  }
docs: Validate aspects that are specific to recipes (i.e. partial Roboconf applications).
  <p>
  Most of this validation could have been handled through enforcer rules. However,
  they are all warnings and we do not want to create hundreds of projects. We can
  see these rules as good practices that will be shared amongst all the Roboonf users.
  </p>
  <p>
  At worst, users can ignore these warnings.
  Or they can submit a feature request to add or remove validation rules.
  </p>
  
  @param project a Maven project
  @param tpl an application template
  @param official true if this recipe is maintained by the Roboconf team, false otherwise
  @return a non-null list of errors