Treat local Claude Code project files as external tooling for architecture lint purposes.
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
import fsd from '@feature-sliced/steiger-plugin'
|
|
import { defineConfig } from 'steiger'
|
|
|
|
import { openPencilArchitecturePlugin } from './tools/architecture/src/steiger-rules/index.ts'
|
|
|
|
// OpenPencil is not laid out as canonical Feature-Sliced Design layers.
|
|
// Keep Steiger focused on project-specific architecture boundaries instead of
|
|
// enabling fsd.configs.recommended, which treats src/ and packages/ as FSD layer typos.
|
|
export default defineConfig([
|
|
fsd.plugin,
|
|
openPencilArchitecturePlugin,
|
|
{
|
|
ignores: [
|
|
'.claude/**',
|
|
'node_modules/**',
|
|
'dist/**',
|
|
'desktop/**',
|
|
'public/**',
|
|
'scratch/**',
|
|
'demo-recordings/**'
|
|
]
|
|
},
|
|
{
|
|
rules: {
|
|
'open-pencil/prefer-domain-folders-over-filename-prefixes': 'error',
|
|
'open-pencil/strict-test-file-placement': 'error',
|
|
'open-pencil/no-engine-only-assertions-in-e2e': 'error',
|
|
'open-pencil/no-e2e-imports-in-engine-tests': 'error',
|
|
'open-pencil/no-root-markdown-clutter': 'error',
|
|
'open-pencil/no-prototype-or-generated-imports': 'error',
|
|
'open-pencil/no-property-panel-imports-in-canvas': 'error',
|
|
'open-pencil/no-app-imports-in-workspace-packages': 'error',
|
|
'open-pencil/no-package-internals-in-app': 'error',
|
|
'open-pencil/no-foreign-package-local-aliases': 'error',
|
|
'open-pencil/no-app-imports-components-or-views': 'error',
|
|
'open-pencil/no-components-import-views': 'error',
|
|
'open-pencil/no-views-imported-outside-entry': 'error',
|
|
'open-pencil/no-non-ui-imports-in-shared-ui': 'error',
|
|
'open-pencil/no-app-imports-in-shared-ui': 'error',
|
|
'open-pencil/no-property-panel-internals-outside-panel': 'error',
|
|
'open-pencil/no-ui-imports-in-core': 'error',
|
|
'open-pencil/scripts-are-entrypoint-shims': 'error',
|
|
'open-pencil/strict-tools-layout': 'error'
|
|
}
|
|
}
|
|
])
|