@harness-engineering/cli 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/harness.js +1 -1
- package/dist/chunk-WE3FMIWI.js +2639 -0
- package/dist/index.js +1 -1
- package/dist/templates/advanced/agents/personas/.gitkeep +0 -0
- package/dist/templates/advanced/docs/changes/.gitkeep +0 -0
- package/dist/templates/advanced/docs/principles.md.hbs +14 -0
- package/dist/templates/advanced/docs/specs/.gitkeep +0 -0
- package/dist/templates/advanced/harness.config.json.hbs +30 -0
- package/dist/templates/advanced/package.json.hbs +21 -0
- package/dist/templates/advanced/template.json +7 -0
- package/dist/templates/base/AGENTS.md.hbs +18 -0
- package/dist/templates/base/docs/index.md.hbs +13 -0
- package/dist/templates/base/template.json +5 -0
- package/dist/templates/basic/harness.config.json.hbs +16 -0
- package/dist/templates/basic/package.json.hbs +15 -0
- package/dist/templates/basic/src/index.ts +1 -0
- package/dist/templates/basic/template.json +7 -0
- package/dist/templates/basic/tsconfig.json +13 -0
- package/dist/templates/intermediate/docs/changes/.gitkeep +0 -0
- package/dist/templates/intermediate/docs/principles.md.hbs +14 -0
- package/dist/templates/intermediate/docs/specs/.gitkeep +0 -0
- package/dist/templates/intermediate/eslint.config.mjs.hbs +12 -0
- package/dist/templates/intermediate/harness.config.json.hbs +22 -0
- package/dist/templates/intermediate/package.json.hbs +19 -0
- package/dist/templates/intermediate/src/domain/.gitkeep +0 -0
- package/dist/templates/intermediate/src/services/.gitkeep +0 -0
- package/dist/templates/intermediate/src/types/.gitkeep +0 -0
- package/dist/templates/intermediate/template.json +7 -0
- package/dist/templates/nextjs/next.config.mjs +3 -0
- package/dist/templates/nextjs/package.json.hbs +17 -0
- package/dist/templates/nextjs/src/app/layout.tsx +12 -0
- package/dist/templates/nextjs/src/app/page.tsx +7 -0
- package/dist/templates/nextjs/src/lib/.gitkeep +0 -0
- package/dist/templates/nextjs/template.json +6 -0
- package/dist/templates/templates/advanced/agents/personas/.gitkeep +0 -0
- package/dist/templates/templates/advanced/docs/changes/.gitkeep +0 -0
- package/dist/templates/templates/advanced/docs/principles.md.hbs +14 -0
- package/dist/templates/templates/advanced/docs/specs/.gitkeep +0 -0
- package/dist/templates/templates/advanced/harness.config.json.hbs +30 -0
- package/dist/templates/templates/advanced/package.json.hbs +21 -0
- package/dist/templates/templates/advanced/template.json +7 -0
- package/dist/templates/templates/base/AGENTS.md.hbs +18 -0
- package/dist/templates/templates/base/docs/index.md.hbs +13 -0
- package/dist/templates/templates/base/template.json +5 -0
- package/dist/templates/templates/basic/harness.config.json.hbs +16 -0
- package/dist/templates/templates/basic/package.json.hbs +15 -0
- package/dist/templates/templates/basic/src/index.ts +1 -0
- package/dist/templates/templates/basic/template.json +7 -0
- package/dist/templates/templates/basic/tsconfig.json +13 -0
- package/dist/templates/templates/intermediate/docs/changes/.gitkeep +0 -0
- package/dist/templates/templates/intermediate/docs/principles.md.hbs +14 -0
- package/dist/templates/templates/intermediate/docs/specs/.gitkeep +0 -0
- package/dist/templates/templates/intermediate/eslint.config.mjs.hbs +12 -0
- package/dist/templates/templates/intermediate/harness.config.json.hbs +22 -0
- package/dist/templates/templates/intermediate/package.json.hbs +19 -0
- package/dist/templates/templates/intermediate/src/domain/.gitkeep +0 -0
- package/dist/templates/templates/intermediate/src/services/.gitkeep +0 -0
- package/dist/templates/templates/intermediate/src/types/.gitkeep +0 -0
- package/dist/templates/templates/intermediate/template.json +7 -0
- package/dist/templates/templates/nextjs/next.config.mjs +3 -0
- package/dist/templates/templates/nextjs/package.json.hbs +17 -0
- package/dist/templates/templates/nextjs/src/app/layout.tsx +12 -0
- package/dist/templates/templates/nextjs/src/app/page.tsx +7 -0
- package/dist/templates/templates/nextjs/src/lib/.gitkeep +0 -0
- package/dist/templates/templates/nextjs/template.json +6 -0
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- templates/advanced/docs/principles.md.hbs --}}
|
|
2
|
+
# {{projectName}} Principles
|
|
3
|
+
|
|
4
|
+
## Code Quality
|
|
5
|
+
- TODO: Define your code quality principles
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
- TODO: Define your architectural principles
|
|
9
|
+
|
|
10
|
+
## Testing
|
|
11
|
+
- TODO: Define your testing approach
|
|
12
|
+
|
|
13
|
+
## Design
|
|
14
|
+
- TODO: Define your design principles
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"forbiddenImports": [
|
|
11
|
+
{ "from": "src/types/**", "disallow": ["src/services/**", "src/api/**"], "message": "Types layer cannot import from services or API" }
|
|
12
|
+
],
|
|
13
|
+
"boundaries": {
|
|
14
|
+
"requireSchema": ["src/api/**"]
|
|
15
|
+
},
|
|
16
|
+
"agentsMapPath": "./AGENTS.md",
|
|
17
|
+
"docsDir": "./docs",
|
|
18
|
+
"agent": {
|
|
19
|
+
"executor": "subprocess",
|
|
20
|
+
"timeout": 300000
|
|
21
|
+
},
|
|
22
|
+
"entropy": {
|
|
23
|
+
"excludePatterns": ["**/node_modules/**", "**/*.test.ts"],
|
|
24
|
+
"autoFix": false
|
|
25
|
+
},
|
|
26
|
+
"template": {
|
|
27
|
+
"level": "advanced",
|
|
28
|
+
"version": 1
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"lint": "eslint src",
|
|
8
|
+
"harness:validate": "harness validate",
|
|
9
|
+
"harness:check-deps": "harness check-deps",
|
|
10
|
+
"harness:check-docs": "harness check-docs",
|
|
11
|
+
"harness:cleanup": "harness cleanup",
|
|
12
|
+
"harness:fix-drift": "harness fix-drift"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
17
|
+
"@harness-engineering/eslint-plugin": "^0.1.0",
|
|
18
|
+
"eslint": "^9.0.0",
|
|
19
|
+
"typescript": "^5.0.0"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# {{projectName}} Knowledge Map
|
|
2
|
+
|
|
3
|
+
## About This Project
|
|
4
|
+
|
|
5
|
+
{{projectName}} — A project using Harness Engineering practices ({{level}} adoption level).
|
|
6
|
+
|
|
7
|
+
## Documentation
|
|
8
|
+
|
|
9
|
+
- Main docs: `docs/`
|
|
10
|
+
- Architecture decisions: `docs/architecture.md`
|
|
11
|
+
|
|
12
|
+
## Source Code
|
|
13
|
+
|
|
14
|
+
- Entry point: `src/index.ts`
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
See `docs/architecture.md` for architectural decisions.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# {{projectName}} Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the {{projectName}} documentation.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
1. Install dependencies: `npm install`
|
|
8
|
+
2. Run checks: `npx harness validate`
|
|
9
|
+
3. Start development
|
|
10
|
+
|
|
11
|
+
## Architecture
|
|
12
|
+
|
|
13
|
+
See [architecture.md](./architecture.md) for architectural decisions.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"agentsMapPath": "./AGENTS.md",
|
|
11
|
+
"docsDir": "./docs",
|
|
12
|
+
"template": {
|
|
13
|
+
"level": "basic",
|
|
14
|
+
"version": 1
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"harness:validate": "harness validate",
|
|
8
|
+
"harness:check-deps": "harness check-deps"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
13
|
+
"typescript": "^5.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- templates/intermediate/docs/principles.md.hbs --}}
|
|
2
|
+
# {{projectName}} Principles
|
|
3
|
+
|
|
4
|
+
## Code Quality
|
|
5
|
+
- TODO: Define your code quality principles
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
- TODO: Define your architectural principles
|
|
9
|
+
|
|
10
|
+
## Testing
|
|
11
|
+
- TODO: Define your testing approach
|
|
12
|
+
|
|
13
|
+
## Design
|
|
14
|
+
- TODO: Define your design principles
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import harnessPlugin from '@harness-engineering/eslint-plugin';
|
|
2
|
+
|
|
3
|
+
export default [
|
|
4
|
+
harnessPlugin.configs.recommended,
|
|
5
|
+
{
|
|
6
|
+
rules: {
|
|
7
|
+
'@harness-engineering/no-circular-deps': 'error',
|
|
8
|
+
'@harness-engineering/no-forbidden-imports': 'error',
|
|
9
|
+
'@harness-engineering/no-layer-violation': 'error',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"forbiddenImports": [
|
|
11
|
+
{ "from": "src/types/**", "disallow": ["src/services/**", "src/api/**"], "message": "Types layer cannot import from services or API" }
|
|
12
|
+
],
|
|
13
|
+
"boundaries": {
|
|
14
|
+
"requireSchema": ["src/api/**"]
|
|
15
|
+
},
|
|
16
|
+
"agentsMapPath": "./AGENTS.md",
|
|
17
|
+
"docsDir": "./docs",
|
|
18
|
+
"template": {
|
|
19
|
+
"level": "intermediate",
|
|
20
|
+
"version": 1
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"lint": "eslint src",
|
|
8
|
+
"harness:validate": "harness validate",
|
|
9
|
+
"harness:check-deps": "harness check-deps",
|
|
10
|
+
"harness:check-docs": "harness check-docs"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
15
|
+
"@harness-engineering/eslint-plugin": "^0.1.0",
|
|
16
|
+
"eslint": "^9.0.0",
|
|
17
|
+
"typescript": "^5.0.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"scripts": {
|
|
4
|
+
"dev": "next dev",
|
|
5
|
+
"build": "next build",
|
|
6
|
+
"start": "next start"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"next": "^14.0.0",
|
|
10
|
+
"react": "^18.0.0",
|
|
11
|
+
"react-dom": "^18.0.0"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/react": "^18.0.0",
|
|
15
|
+
"@types/react-dom": "^18.0.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
title: 'Harness Engineering App',
|
|
3
|
+
description: 'Built with Harness Engineering practices',
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
7
|
+
return (
|
|
8
|
+
<html lang="en">
|
|
9
|
+
<body>{children}</body>
|
|
10
|
+
</html>
|
|
11
|
+
);
|
|
12
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- templates/advanced/docs/principles.md.hbs --}}
|
|
2
|
+
# {{projectName}} Principles
|
|
3
|
+
|
|
4
|
+
## Code Quality
|
|
5
|
+
- TODO: Define your code quality principles
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
- TODO: Define your architectural principles
|
|
9
|
+
|
|
10
|
+
## Testing
|
|
11
|
+
- TODO: Define your testing approach
|
|
12
|
+
|
|
13
|
+
## Design
|
|
14
|
+
- TODO: Define your design principles
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"forbiddenImports": [
|
|
11
|
+
{ "from": "src/types/**", "disallow": ["src/services/**", "src/api/**"], "message": "Types layer cannot import from services or API" }
|
|
12
|
+
],
|
|
13
|
+
"boundaries": {
|
|
14
|
+
"requireSchema": ["src/api/**"]
|
|
15
|
+
},
|
|
16
|
+
"agentsMapPath": "./AGENTS.md",
|
|
17
|
+
"docsDir": "./docs",
|
|
18
|
+
"agent": {
|
|
19
|
+
"executor": "subprocess",
|
|
20
|
+
"timeout": 300000
|
|
21
|
+
},
|
|
22
|
+
"entropy": {
|
|
23
|
+
"excludePatterns": ["**/node_modules/**", "**/*.test.ts"],
|
|
24
|
+
"autoFix": false
|
|
25
|
+
},
|
|
26
|
+
"template": {
|
|
27
|
+
"level": "advanced",
|
|
28
|
+
"version": 1
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"lint": "eslint src",
|
|
8
|
+
"harness:validate": "harness validate",
|
|
9
|
+
"harness:check-deps": "harness check-deps",
|
|
10
|
+
"harness:check-docs": "harness check-docs",
|
|
11
|
+
"harness:cleanup": "harness cleanup",
|
|
12
|
+
"harness:fix-drift": "harness fix-drift"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
17
|
+
"@harness-engineering/eslint-plugin": "^0.1.0",
|
|
18
|
+
"eslint": "^9.0.0",
|
|
19
|
+
"typescript": "^5.0.0"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# {{projectName}} Knowledge Map
|
|
2
|
+
|
|
3
|
+
## About This Project
|
|
4
|
+
|
|
5
|
+
{{projectName}} — A project using Harness Engineering practices ({{level}} adoption level).
|
|
6
|
+
|
|
7
|
+
## Documentation
|
|
8
|
+
|
|
9
|
+
- Main docs: `docs/`
|
|
10
|
+
- Architecture decisions: `docs/architecture.md`
|
|
11
|
+
|
|
12
|
+
## Source Code
|
|
13
|
+
|
|
14
|
+
- Entry point: `src/index.ts`
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
See `docs/architecture.md` for architectural decisions.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# {{projectName}} Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the {{projectName}} documentation.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
1. Install dependencies: `npm install`
|
|
8
|
+
2. Run checks: `npx harness validate`
|
|
9
|
+
3. Start development
|
|
10
|
+
|
|
11
|
+
## Architecture
|
|
12
|
+
|
|
13
|
+
See [architecture.md](./architecture.md) for architectural decisions.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"agentsMapPath": "./AGENTS.md",
|
|
11
|
+
"docsDir": "./docs",
|
|
12
|
+
"template": {
|
|
13
|
+
"level": "basic",
|
|
14
|
+
"version": 1
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"harness:validate": "harness validate",
|
|
8
|
+
"harness:check-deps": "harness check-deps"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
13
|
+
"typescript": "^5.0.0"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- templates/intermediate/docs/principles.md.hbs --}}
|
|
2
|
+
# {{projectName}} Principles
|
|
3
|
+
|
|
4
|
+
## Code Quality
|
|
5
|
+
- TODO: Define your code quality principles
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
- TODO: Define your architectural principles
|
|
9
|
+
|
|
10
|
+
## Testing
|
|
11
|
+
- TODO: Define your testing approach
|
|
12
|
+
|
|
13
|
+
## Design
|
|
14
|
+
- TODO: Define your design principles
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import harnessPlugin from '@harness-engineering/eslint-plugin';
|
|
2
|
+
|
|
3
|
+
export default [
|
|
4
|
+
harnessPlugin.configs.recommended,
|
|
5
|
+
{
|
|
6
|
+
rules: {
|
|
7
|
+
'@harness-engineering/no-circular-deps': 'error',
|
|
8
|
+
'@harness-engineering/no-forbidden-imports': 'error',
|
|
9
|
+
'@harness-engineering/no-layer-violation': 'error',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "{{projectName}}",
|
|
4
|
+
"layers": [
|
|
5
|
+
{ "name": "types", "pattern": "src/types/**", "allowedDependencies": [] },
|
|
6
|
+
{ "name": "domain", "pattern": "src/domain/**", "allowedDependencies": ["types"] },
|
|
7
|
+
{ "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
|
|
8
|
+
{ "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
|
|
9
|
+
],
|
|
10
|
+
"forbiddenImports": [
|
|
11
|
+
{ "from": "src/types/**", "disallow": ["src/services/**", "src/api/**"], "message": "Types layer cannot import from services or API" }
|
|
12
|
+
],
|
|
13
|
+
"boundaries": {
|
|
14
|
+
"requireSchema": ["src/api/**"]
|
|
15
|
+
},
|
|
16
|
+
"agentsMapPath": "./AGENTS.md",
|
|
17
|
+
"docsDir": "./docs",
|
|
18
|
+
"template": {
|
|
19
|
+
"level": "intermediate",
|
|
20
|
+
"version": 1
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"lint": "eslint src",
|
|
8
|
+
"harness:validate": "harness validate",
|
|
9
|
+
"harness:check-deps": "harness check-deps",
|
|
10
|
+
"harness:check-docs": "harness check-docs"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@harness-engineering/cli": "^0.1.0",
|
|
15
|
+
"@harness-engineering/eslint-plugin": "^0.1.0",
|
|
16
|
+
"eslint": "^9.0.0",
|
|
17
|
+
"typescript": "^5.0.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|