pub mod monorepo;
pub mod micro_repo;
pub mod mobile;
pub mod frontend;
pub mod backend;
pub mod iac;
pub mod serverless;
pub mod ml;
pub mod codegen;
pub mod polyglot;
pub mod legacy;
pub mod doc_site;
pub mod game_dev;
use crate::rules::Rule;
pub fn project_specific_rules() -> Vec<Box<dyn Rule>> {
vec![
Box::new(monorepo::RootClaudeMdThin),
Box::new(monorepo::PerPackageClaudeMd),
Box::new(monorepo::WorkspaceOutputsIgnored),
Box::new(monorepo::PathScopedRulesPerPackage),
Box::new(monorepo::PerPackageTestCommands),
Box::new(monorepo::WorkspaceDepsNavigable),
Box::new(monorepo::SharedToolingConfig),
Box::new(micro_repo::ReadmeIsPrimary),
Box::new(micro_repo::ComprehensiveTests),
Box::new(micro_repo::ManifestComplete),
Box::new(micro_repo::ExamplesExist),
Box::new(mobile::PlatformBuildDirsIgnored),
Box::new(mobile::GeneratedCodeIgnored),
Box::new(mobile::PlatformCommands),
Box::new(mobile::BinaryAssetsExcluded),
Box::new(mobile::LightweightVerification),
Box::new(frontend::BuildCacheIgnored),
Box::new(frontend::SourceMapsIgnored),
Box::new(frontend::EnvExampleExists),
Box::new(frontend::TypeCheckBeforeBuild),
Box::new(backend::MigrationHistoryManageable),
Box::new(backend::DatabaseFilesIgnored),
Box::new(backend::VirtualEnvsIgnored),
Box::new(backend::DataAccessDocumented),
Box::new(backend::ApiSpecExists),
Box::new(backend::LogFilesIgnored),
Box::new(iac::StateFilesBlocked),
Box::new(iac::PlanOutputFiltered),
Box::new(iac::ProviderCacheIgnored),
Box::new(iac::SecretsExternal),
Box::new(iac::ModuleConventions),
Box::new(serverless::DeployArtifactsIgnored),
Box::new(serverless::FunctionsFocused),
Box::new(serverless::TestEventsExist),
Box::new(serverless::NoCloudCreds),
Box::new(ml::NotebooksNotPrimary),
Box::new(ml::ModelFilesIgnored),
Box::new(ml::DatasetFilesIgnored),
Box::new(ml::ExperimentWorkflowDocumented),
Box::new(ml::RequirementsPinned),
Box::new(codegen::GeneratedDirsIgnored),
Box::new(codegen::EditSpecsNotGenerated),
Box::new(codegen::RegenCommandDocumented),
Box::new(codegen::AutoRegenHook),
Box::new(polyglot::PerLanguageClaudeMd),
Box::new(polyglot::RootClaudeMdAgnostic),
Box::new(polyglot::IndependentBuildTest),
Box::new(polyglot::AllRuntimesIgnored),
Box::new(legacy::DocumentsTheMess),
Box::new(legacy::CorrectPatternsIdentified),
Box::new(legacy::TestsForModifiedCode),
Box::new(legacy::DeadCodeFlagged),
Box::new(legacy::MegaFilesDocumented),
Box::new(doc_site::BuildOutputIgnored),
Box::new(doc_site::MarkdownSourceFocus),
Box::new(doc_site::NavigationDocumented),
Box::new(game_dev::BinaryAssetsIgnored),
Box::new(game_dev::EditorMetadataIgnored),
Box::new(game_dev::ScriptsArePrimary),
Box::new(game_dev::GameLogicTests),
]
}