@zweer/dev 1.3.0 → 2.1.0

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.
Files changed (132) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +68 -795
  3. package/configs/_biome.json +38 -0
  4. package/configs/commitlint.config.ts +1 -0
  5. package/configs/editorconfig +16 -0
  6. package/configs/lefthook.yml +38 -0
  7. package/configs/lockfile-lintrc.json +6 -0
  8. package/configs/npmpackagejsonlintrc.json +34 -0
  9. package/configs/tsconfig.json +9 -0
  10. package/configs/tsdown.config.ts +8 -0
  11. package/configs/vitest.config.ts +12 -0
  12. package/dist/index.d.mts +1 -0
  13. package/dist/index.mjs +247 -0
  14. package/dist/index.mjs.map +1 -0
  15. package/kiro/agents/zweer-setup.json +38 -0
  16. package/kiro/prompts/zweer-setup.md +55 -0
  17. package/kiro/skills/agent-template/SKILL.md +22 -0
  18. package/kiro/skills/agent-template/references/base.json +38 -0
  19. package/kiro/skills/agent-template/references/example-monorepo-library.json +60 -0
  20. package/kiro/skills/agent-template/references/example-webapp-vercel.json +54 -0
  21. package/kiro/skills/prompt-template/SKILL.md +23 -0
  22. package/kiro/skills/prompt-template/references/example-library.md +56 -0
  23. package/kiro/skills/prompt-template/references/example-webapp.md +57 -0
  24. package/kiro/skills/skill-templates/SKILL.md +23 -0
  25. package/kiro/skills/skill-templates/references/new-package.md +72 -0
  26. package/kiro/skills/steering-templates/SKILL.md +31 -0
  27. package/kiro/skills/steering-templates/references/build-tooling.md +62 -0
  28. package/kiro/skills/steering-templates/references/code-style.md +83 -0
  29. package/kiro/skills/steering-templates/references/commit-conventions.md +58 -0
  30. package/kiro/skills/steering-templates/references/interaction.md +41 -0
  31. package/kiro/skills/steering-templates/references/testing.md +61 -0
  32. package/kiro/steering/build-tooling.md +62 -0
  33. package/kiro/steering/code-style.md +83 -0
  34. package/kiro/steering/commit-conventions.md +58 -0
  35. package/kiro/steering/interaction.md +41 -0
  36. package/kiro/steering/testing.md +61 -0
  37. package/package.json +42 -57
  38. package/templates/monorepo/CHANGELOG.md +5 -0
  39. package/templates/monorepo/README.md +22 -0
  40. package/templates/monorepo/package.json +30 -0
  41. package/templates/monorepo/packages/core/CHANGELOG.md +5 -0
  42. package/templates/monorepo/packages/core/README.md +21 -0
  43. package/templates/monorepo/packages/core/package.json +28 -0
  44. package/templates/monorepo/packages/core/src/index.ts +3 -0
  45. package/templates/monorepo/packages/core/test/index.test.ts +9 -0
  46. package/templates/monorepo/tsdown.config.ts +12 -0
  47. package/templates/monorepo/vitest.config.ts +12 -0
  48. package/templates/single/CHANGELOG.md +5 -0
  49. package/templates/single/README.md +30 -0
  50. package/templates/single/package.json +38 -0
  51. package/templates/single/src/index.ts +3 -0
  52. package/templates/single/test/index.test.ts +9 -0
  53. package/templates/single/tsdown.config.ts +11 -0
  54. package/workflows/base/ci.yml +24 -0
  55. package/workflows/base/dependabot-auto-merge.yml +43 -0
  56. package/workflows/base/dependabot-post-update.yml +38 -0
  57. package/workflows/base/dependabot.yml +39 -0
  58. package/workflows/base/pr.yml +41 -0
  59. package/workflows/base/security.yml +25 -0
  60. package/workflows/docs/docs.yml +47 -0
  61. package/workflows/library/npm.yml +45 -0
  62. package/agents/data/zweer_data_engineer.md +0 -436
  63. package/agents/design/zweer_ui_designer.md +0 -171
  64. package/agents/design/zweer_ui_ux.md +0 -124
  65. package/agents/infrastructure/zweer_infra_cdk.md +0 -701
  66. package/agents/infrastructure/zweer_infra_devops.md +0 -148
  67. package/agents/infrastructure/zweer_infra_observability.md +0 -610
  68. package/agents/infrastructure/zweer_infra_terraform.md +0 -658
  69. package/agents/mobile/zweer_mobile_android.md +0 -636
  70. package/agents/mobile/zweer_mobile_flutter.md +0 -623
  71. package/agents/mobile/zweer_mobile_ionic.md +0 -550
  72. package/agents/mobile/zweer_mobile_ios.md +0 -504
  73. package/agents/mobile/zweer_mobile_react_native.md +0 -561
  74. package/agents/quality/zweer_qa_documentation.md +0 -202
  75. package/agents/quality/zweer_qa_performance.md +0 -160
  76. package/agents/quality/zweer_qa_security.md +0 -197
  77. package/agents/quality/zweer_qa_testing.md +0 -189
  78. package/agents/services/zweer_svc_api_gateway.md +0 -553
  79. package/agents/services/zweer_svc_containers.md +0 -575
  80. package/agents/services/zweer_svc_lambda.md +0 -373
  81. package/agents/services/zweer_svc_messaging.md +0 -543
  82. package/agents/services/zweer_svc_microservices.md +0 -502
  83. package/agents/web/zweer_web_api_integration.md +0 -500
  84. package/agents/web/zweer_web_backend.md +0 -358
  85. package/agents/web/zweer_web_database.md +0 -357
  86. package/agents/web/zweer_web_frontend.md +0 -375
  87. package/agents/web/zweer_web_reader.md +0 -229
  88. package/agents/write/zweer_write_content.md +0 -499
  89. package/agents/write/zweer_write_narrative.md +0 -409
  90. package/agents/write/zweer_write_style.md +0 -247
  91. package/agents/write/zweer_write_warmth.md +0 -282
  92. package/cli/commands/bootstrap.d.ts +0 -4
  93. package/cli/commands/bootstrap.js +0 -377
  94. package/cli/commands/cao/agent/create.d.ts +0 -25
  95. package/cli/commands/cao/agent/create.js +0 -221
  96. package/cli/commands/cao/agent/index.d.ts +0 -2
  97. package/cli/commands/cao/agent/index.js +0 -8
  98. package/cli/commands/cao/agent/list.d.ts +0 -3
  99. package/cli/commands/cao/agent/list.js +0 -29
  100. package/cli/commands/cao/agent/remove.d.ts +0 -5
  101. package/cli/commands/cao/agent/remove.js +0 -39
  102. package/cli/commands/cao/index.d.ts +0 -2
  103. package/cli/commands/cao/index.js +0 -20
  104. package/cli/commands/cao/install.d.ts +0 -10
  105. package/cli/commands/cao/install.js +0 -59
  106. package/cli/commands/cao/launch.d.ts +0 -3
  107. package/cli/commands/cao/launch.js +0 -21
  108. package/cli/commands/cao/list.d.ts +0 -6
  109. package/cli/commands/cao/list.js +0 -36
  110. package/cli/commands/cao/server.d.ts +0 -3
  111. package/cli/commands/cao/server.js +0 -20
  112. package/cli/commands/cao/status.d.ts +0 -2
  113. package/cli/commands/cao/status.js +0 -25
  114. package/cli/commands/cao/sync.d.ts +0 -6
  115. package/cli/commands/cao/sync.js +0 -52
  116. package/cli/commands/cao/uninstall.d.ts +0 -2
  117. package/cli/commands/cao/uninstall.js +0 -16
  118. package/cli/commands/setup.d.ts +0 -4
  119. package/cli/commands/setup.js +0 -346
  120. package/cli/index.d.ts +0 -2
  121. package/cli/index.js +0 -13
  122. package/cli/utils/agents.d.ts +0 -8
  123. package/cli/utils/agents.js +0 -55
  124. package/cli/utils/cao.d.ts +0 -11
  125. package/cli/utils/cao.js +0 -56
  126. package/cli/utils/paths.d.ts +0 -5
  127. package/cli/utils/paths.js +0 -11
  128. package/templates/orchestrator_lambda.md +0 -263
  129. package/templates/orchestrator_microservices.md +0 -345
  130. package/templates/orchestrator_mobile.md +0 -199
  131. package/templates/orchestrator_webapp.md +0 -190
  132. package/templates/orchestrator_writing.md +0 -306
@@ -0,0 +1,62 @@
1
+ # Build & Tooling
2
+
3
+ ## Build System
4
+
5
+ ### tsdown
6
+ - **tsdown** for building all packages (NOT tsc, esbuild, rollup)
7
+ - Configuration: `tsdown.config.ts` at root
8
+ - Workspace mode for monorepos
9
+ - Outputs: `.mjs` + `.d.ts` + sourcemaps
10
+ - tsc is only used for type-checking (`tsc --noEmit`)
11
+
12
+ ### Build Commands
13
+ ```bash
14
+ npm run build # Build with tsdown
15
+ npm run clean # Remove dist/
16
+ npm run lint:typecheck # Type-check only (tsc --noEmit)
17
+ ```
18
+
19
+ ## Linting & Formatting
20
+
21
+ ### Biome
22
+ - **Biome** for linting and formatting (NOT ESLint/Prettier)
23
+ - Single quotes, 100 line width
24
+ - Uses `.editorconfig` for indent settings
25
+ - Import sorting with grouped blank lines
26
+
27
+ ### Commands
28
+ ```bash
29
+ npm run lint # All linters in parallel
30
+ npm run lint:format # Biome check + fix
31
+ npm run lint:typecheck # TypeScript check
32
+ npm run lint:lockfile # Lockfile security
33
+ npm run lint:package # package.json validation
34
+ npm run lint:sort_package # Sort package.json keys
35
+ npm run lint:engines # Validate engine compatibility
36
+ ```
37
+
38
+ ## Git Hooks
39
+
40
+ ### Lefthook
41
+ - **Lefthook** for git hooks (NOT husky + lint-staged)
42
+ - Configuration: `lefthook.yml` at root
43
+ - Pre-commit: biome → lockfile → package-lint → sort → build → typecheck → test
44
+ - Commit-msg: commitlint validation
45
+ - Built-in staging support (`stage_fixed: true`)
46
+
47
+ ## Package Manager
48
+
49
+ ### npm
50
+ - Use **npm** (NOT pnpm or yarn)
51
+ - Lock file: `package-lock.json`
52
+ - Workspaces enabled in root `package.json` for monorepos
53
+
54
+ ## Scripts Reference
55
+
56
+ | Script | Description |
57
+ |--------|-------------|
58
+ | `npm run build` | Build with tsdown |
59
+ | `npm run clean` | Remove dist/ |
60
+ | `npm run lint` | All linters in parallel |
61
+ | `npm test` | Run tests |
62
+ | `npm run test:coverage` | Tests with coverage |
@@ -0,0 +1,83 @@
1
+ # Code Style & Best Practices
2
+
3
+ ## TypeScript
4
+
5
+ ### Strict Mode
6
+ - Always use strict mode (enabled in `tsconfig.json`)
7
+ - No `any` types — use `unknown` or proper types
8
+ - Explicit return types on all exported functions
9
+ - Explicit parameter types always
10
+
11
+ ### Module System
12
+ - ES modules only (`"type": "module"` in package.json)
13
+ - Use `.js` extensions in imports (TypeScript requirement for ES modules)
14
+ - Example: `import { foo } from './bar.js'` (not `./bar` or `./bar.ts`)
15
+
16
+ ### Naming Conventions
17
+ - **camelCase** for variables, functions, methods
18
+ - **PascalCase** for classes, interfaces, types
19
+ - **UPPER_SNAKE_CASE** for constants
20
+ - **kebab-case** for file names
21
+
22
+ ### Code Organization
23
+ ```typescript
24
+ // 1. Imports (external first, then internal)
25
+ import { execa } from 'execa';
26
+ import type { Config } from './types.js';
27
+
28
+ // 2. Types/Interfaces
29
+ export interface MyConfig {
30
+ option: string;
31
+ }
32
+
33
+ // 3. Constants
34
+ const DEFAULT_TIMEOUT = 5000;
35
+
36
+ // 4. Classes/Functions
37
+ export class MyClass {}
38
+ ```
39
+
40
+ ### Type Definitions
41
+ - Prefer `interface` over `type` for object shapes
42
+ - Use `type` for unions, intersections, mapped types
43
+ - Export all public types
44
+ - Use `readonly` for immutable properties
45
+
46
+ ## Code Quality
47
+
48
+ ### Minimal Code
49
+ - Write only what's necessary
50
+ - No premature abstractions
51
+ - No unused code or imports
52
+ - No commented-out code in commits
53
+
54
+ ### Error Handling
55
+ - Always throw typed errors with clear messages
56
+ - Include context in error messages
57
+ - Use `try/catch` for async operations
58
+
59
+ ### Async/Await
60
+ - Prefer `async/await` over `.then()/.catch()`
61
+ - Always handle errors in async functions
62
+ - Use `Promise.all()` for parallel operations
63
+
64
+ ## Dependencies
65
+
66
+ ### Minimal Dependencies
67
+ - Only add dependencies when absolutely necessary
68
+ - Prefer native Node.js APIs when possible
69
+ - Use `^` for dependencies (allow minor/patch updates)
70
+ - Keep dependencies up to date — run `npm outdated` regularly
71
+ - Security updates must be applied immediately
72
+
73
+ ## Comments & Documentation
74
+
75
+ ### When to Comment
76
+ - Complex algorithms or non-obvious logic
77
+ - Public APIs (JSDoc)
78
+ - Workarounds or hacks (with explanation)
79
+
80
+ ### When NOT to Comment
81
+ - Obvious code
82
+ - Redundant information
83
+ - Commented-out code (delete it)
@@ -0,0 +1,58 @@
1
+ # Commit Conventions
2
+
3
+ **IMPORTANT**: The agent NEVER commits, pushes, or creates tags. The developer handles all git operations manually.
4
+
5
+ ## Format
6
+
7
+ Use conventional commits with gitmoji as text (not emoji):
8
+
9
+ ```
10
+ type(scope): :emoji_code: short description
11
+
12
+ Detailed explanation of what changed and why.
13
+ Include multiple lines if needed to fully describe:
14
+ - What was changed
15
+ - Why it was changed
16
+ - Any breaking changes or important notes
17
+ ```
18
+
19
+ ## Types
20
+
21
+ - `feat` — New feature (`:sparkles:`)
22
+ - `fix` — Bug fix (`:bug:`)
23
+ - `perf` — Performance improvement (`:zap:`)
24
+ - `docs` — Documentation (`:memo:`)
25
+ - `chore` — Maintenance tasks (`:wrench:`, `:arrow_up:`, `:bookmark:`)
26
+ - `refactor` — Code refactoring (`:recycle:`)
27
+ - `test` — Tests (`:white_check_mark:`)
28
+ - `style` — Code formatting (`:art:`)
29
+ - `ci` — CI/CD changes (`:construction_worker:`)
30
+ - `build` — Build system (`:hammer:`)
31
+
32
+ ## Scope
33
+
34
+ Use only ONE scope per commit — typically the package, module, or component affected.
35
+
36
+ If `.vscode/settings.json` exists with `conventionalCommits.scopes`, use those values.
37
+ Scope is optional for cross-cutting changes.
38
+
39
+ ## Gitmoji
40
+
41
+ **Always use text codes** (`:sparkles:`), **never actual emoji** (✨).
42
+
43
+ ## Body
44
+
45
+ **Always include a detailed body** explaining:
46
+ 1. What was changed
47
+ 2. Why it was changed
48
+ 3. Any important context or side effects
49
+
50
+ ## Breaking Changes
51
+
52
+ Add `!` after the type/scope and include `BREAKING CHANGE:` in the body:
53
+
54
+ ```
55
+ feat(api)!: :boom: remove deprecated methods
56
+
57
+ BREAKING CHANGE: Removed old API methods deprecated in v0.5.
58
+ ```
@@ -0,0 +1,41 @@
1
+ # Interaction Patterns
2
+
3
+ ## Interview Before Implementing
4
+
5
+ For ambiguous or complex requests, ask clarifying questions BEFORE writing code:
6
+ - What's the expected behavior?
7
+ - Are there edge cases to consider?
8
+ - Does this affect existing features?
9
+ - What's the priority (quick fix vs proper solution)?
10
+
11
+ Skip the interview for clear, well-defined tasks.
12
+
13
+ ## Plan Mode
14
+
15
+ For multi-step tasks (new features, refactors, architecture changes):
16
+ 1. Write a short numbered plan first
17
+ 2. Wait for approval before implementing
18
+ 3. Adapt the plan if requirements change mid-execution
19
+
20
+ Skip planning for single-file fixes, small bug fixes, or simple questions.
21
+
22
+ ## ASCII Diagrams
23
+
24
+ Use ASCII diagrams when discussing:
25
+ - Architecture decisions
26
+ - Data flow between components
27
+ - New feature design involving multiple files
28
+ - Database schema relationships
29
+
30
+ ## Context Hygiene
31
+
32
+ - Keep each steering/spec file under ~200 lines
33
+ - Split files when they grow beyond that
34
+ - One concern per file (don't mix code style with testing rules)
35
+ - Update specs when features are completed or changed
36
+
37
+ ## Git Rules
38
+
39
+ - **NEVER commit, push, or create tags** — the developer handles all git operations
40
+ - Prepare changes and suggest a commit message
41
+ - The developer reviews and commits manually
@@ -0,0 +1,61 @@
1
+ # Testing Strategy
2
+
3
+ ## Test Framework
4
+
5
+ ### Vitest
6
+ - All tests use **Vitest** (NOT Jest, Mocha, or others)
7
+ - Configuration in `vitest.config.ts` at root
8
+ - v8 coverage provider
9
+ - Coverage reporters: text, json, json-summary
10
+
11
+ ## Test Structure
12
+
13
+ ### File Organization
14
+ ```
15
+ src/
16
+ └── feature.ts
17
+ test/
18
+ └── feature.test.ts
19
+ ```
20
+
21
+ ### Test Pattern (AAA)
22
+ ```typescript
23
+ import { describe, it, expect } from 'vitest';
24
+
25
+ describe('FeatureName', () => {
26
+ it('should do something specific', () => {
27
+ // Arrange
28
+ const input = 'test';
29
+
30
+ // Act
31
+ const result = doSomething(input);
32
+
33
+ // Assert
34
+ expect(result).toBe('expected');
35
+ });
36
+ });
37
+ ```
38
+
39
+ ## Mocking
40
+
41
+ ### When to Mock
42
+ - External APIs, file system, git commands, network requests
43
+
44
+ ### When NOT to Mock
45
+ - Internal functions, simple utilities, pure functions
46
+
47
+ ## Best Practices
48
+
49
+ ### Test Naming
50
+ - Use `should` in test names: "should throw error when input is invalid"
51
+
52
+ ### Independence
53
+ - Each test must be independent — no shared state
54
+ - Use `beforeEach` for setup
55
+
56
+ ### Edge Cases
57
+ - Empty arrays/strings, null/undefined, invalid input, boundary values
58
+
59
+ ### Coverage
60
+ - Exclude barrel re-exports (`index.ts`) and type files (`types.ts`)
61
+ - Include all source files in coverage
package/package.json CHANGED
@@ -1,87 +1,72 @@
1
1
  {
2
2
  "name": "@zweer/dev",
3
- "version": "1.3.0",
4
- "description": "Shared configurations & AI agents for software projects",
3
+ "version": "2.1.0",
4
+ "description": "Shared configurations, golden configs & Kiro AI templates for software projects",
5
5
  "keywords": [
6
- "ai",
7
- "agents",
8
- "cao",
9
6
  "cli",
10
- "development"
7
+ "development",
8
+ "kiro",
9
+ "configs",
10
+ "tooling"
11
11
  ],
12
12
  "homepage": "https://github.com/Zweer/dev#readme",
13
13
  "bugs": {
14
14
  "url": "https://github.com/Zweer/dev/issues"
15
15
  },
16
- "license": "MIT",
17
- "author": "Zweer <n.olivieriachille@gmail.com>",
18
- "files": [
19
- "cli/**/*.js",
20
- "cli/**/*.d.ts",
21
- "agents",
22
- "templates"
23
- ],
24
- "bin": "./cli/index.js",
25
- "release": {
26
- "plugins": [
27
- "@semantic-release/commit-analyzer",
28
- "@semantic-release/release-notes-generator",
29
- "@semantic-release/changelog",
30
- "@semantic-release/npm",
31
- "@semantic-release/github",
32
- "@semantic-release/git"
33
- ]
34
- },
35
16
  "repository": {
36
17
  "type": "git",
37
18
  "url": "git+https://github.com/Zweer/dev.git"
38
19
  },
20
+ "license": "MIT",
21
+ "author": "Zweer <n.olivieriachille@gmail.com>",
39
22
  "type": "module",
23
+ "bin": "./dist/index.js",
24
+ "files": [
25
+ "dist/**/*",
26
+ "configs/**/*",
27
+ "kiro/**/*",
28
+ "workflows/**/*",
29
+ "templates/**/*"
30
+ ],
40
31
  "scripts": {
32
+ "build": "tsdown",
33
+ "clean": "rimraf dist",
41
34
  "lint": "concurrently npm:lint:* --prefixColors auto",
42
- "lint:format": "biome check --write",
43
- "lint:lockfile": "lockfile-lint --path package-lock.json",
44
35
  "lint:engines": "ls-engines",
36
+ "lint:format": "biome check --write",
37
+ "lint:lockfile": "lockfile-lint",
45
38
  "lint:package": "npmPkgJsonLint .",
46
- "lint:publish": "publint --strict",
39
+ "lint:sort_package": "sort-package-json \"package.json\"",
40
+ "lint:typecheck": "tsc --noEmit",
41
+ "prepare": "lefthook install",
47
42
  "test": "vitest run",
48
- "test:coverage": "vitest run --coverage",
49
- "check": "npm run clean && npm run test:coverage && npm run build && npm run lint && npm run clean",
50
- "prepare": "[ \"$CI\" = \"true\" ] || [ \"$GITHUB_ACTIONS\" = \"true\" ] && echo 'Skipping husky' && exit 0 || husky",
51
- "clean": "rimraf --glob ./{cli,test}/**/*.{d.ts,js} ./vitest*.{d.ts,js}",
52
- "prebuild": "npm run clean",
53
- "build": "tsc",
54
- "release": "semantic-release"
43
+ "test:coverage": "vitest run --coverage"
55
44
  },
56
45
  "dependencies": {
57
- "@commander-js/extra-typings": "^12.1.0",
58
- "chalk": "^5.3.0",
59
- "commander": "^12.1.0",
60
- "inquirer": "^12.0.0",
61
- "ora": "^8.1.1"
46
+ "@commander-js/extra-typings": "^14.0.0",
47
+ "commander": "^14.0.3"
62
48
  },
63
49
  "devDependencies": {
64
- "@biomejs/biome": "^2.3.4",
65
- "@semantic-release/changelog": "^6.0.3",
66
- "@semantic-release/git": "^10.0.1",
67
- "@tsconfig/node22": "^22.0.2",
68
- "@types/node": "^24.10.0",
69
- "@vitest/coverage-v8": "^4.0.8",
50
+ "@biomejs/biome": "^2.4.8",
51
+ "@commitlint/cli": "^20.5.0",
52
+ "@commitlint/config-conventional": "^20.5.0",
53
+ "@tsconfig/node22": "^22.0.5",
54
+ "@types/node": "^25.5.0",
55
+ "@vitest/coverage-v8": "^4.1.0",
56
+ "bonvoy": "^0.13.1",
70
57
  "concurrently": "^9.2.1",
71
- "husky": "^9.1.7",
72
- "lint-staged": "^16.2.6",
73
- "lockfile-lint": "^4.14.1",
74
- "ls-engines": "^0.9.3",
75
- "npm-package-json-lint": "^9.0.0",
76
- "npm-package-json-lint-config-default": "^8.0.1",
77
- "publint": "^0.3.15",
78
- "rimraf": "^6.1.0",
79
- "semantic-release": "^25.0.2",
58
+ "lefthook": "^2.1.4",
59
+ "lockfile-lint": "^5.0.0",
60
+ "ls-engines": "^0.10.0",
61
+ "npm-package-json-lint": "^9.1.0",
62
+ "rimraf": "^6.1.3",
63
+ "sort-package-json": "^3.6.1",
64
+ "tsdown": "^0.21.4",
80
65
  "typescript": "^5.9.3",
81
- "vitest": "^4.0.8"
66
+ "vitest": "^4.1.0"
82
67
  },
83
68
  "engines": {
84
- "node": ">= 20.17"
69
+ "node": ">= 22"
85
70
  },
86
71
  "publishConfig": {
87
72
  "access": "public",
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
@@ -0,0 +1,22 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ ## Packages
6
+
7
+ | Package | Description |
8
+ |---------|-------------|
9
+ | `{{scope}}/core` | Core package |
10
+
11
+ ## Development
12
+
13
+ ```bash
14
+ npm install
15
+ npm run build
16
+ npm test
17
+ npm run lint
18
+ ```
19
+
20
+ ## License
21
+
22
+ MIT
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.0.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "workspaces": [
7
+ "packages/*"
8
+ ],
9
+ "scripts": {
10
+ "build": "tsdown",
11
+ "clean": "rimraf packages/*/dist",
12
+ "lint": "concurrently npm:lint:* --prefixColors auto",
13
+ "lint:engines": "ls-engines",
14
+ "lint:format": "biome check --write",
15
+ "lint:lockfile": "lockfile-lint",
16
+ "lint:package": "npmPkgJsonLint .",
17
+ "lint:sort_package": "sort-package-json \"package.json\" \"packages/*/package.json\"",
18
+ "lint:typecheck": "tsc --noEmit",
19
+ "prepare": "lefthook install",
20
+ "test": "vitest run",
21
+ "test:coverage": "vitest run --coverage"
22
+ },
23
+ "keywords": [],
24
+ "author": "{{author}}",
25
+ "license": "MIT",
26
+ "engines": {
27
+ "node": ">= 22"
28
+ },
29
+ "devDependencies": {}
30
+ }
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
@@ -0,0 +1,21 @@
1
+ # {{scope}}/core
2
+
3
+ > Core package
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install {{scope}}/core
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { hello } from '{{scope}}/core';
15
+
16
+ hello('World');
17
+ ```
18
+
19
+ ## License
20
+
21
+ MIT
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "{{scope}}/core",
3
+ "version": "0.0.0",
4
+ "description": "Core package",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./dist/index.mjs",
8
+ "./package.json": "./package.json"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "keywords": [],
14
+ "author": "{{author}}",
15
+ "license": "MIT",
16
+ "homepage": "{{homepage}}",
17
+ "bugs": {
18
+ "url": "{{bugs}}"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "{{repository}}",
23
+ "directory": "packages/core"
24
+ },
25
+ "engines": {
26
+ "node": ">= 22"
27
+ }
28
+ }
@@ -0,0 +1,3 @@
1
+ export function hello(name: string): string {
2
+ return `Hello, ${name}!`;
3
+ }
@@ -0,0 +1,9 @@
1
+ import { describe, expect, it } from 'vitest';
2
+
3
+ import { hello } from '../src/index.js';
4
+
5
+ describe('hello', () => {
6
+ it('should greet by name', () => {
7
+ expect(hello('World')).toBe('Hello, World!');
8
+ });
9
+ });
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'tsdown';
2
+
3
+ export default defineConfig({
4
+ workspace: true,
5
+ entry: ['src/index.ts'],
6
+ dts: true,
7
+ sourcemap: true,
8
+ format: 'esm',
9
+ exports: true,
10
+ publint: 'ci-only',
11
+ attw: { enabled: 'ci-only', profile: 'esm-only' },
12
+ });
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ coverage: {
6
+ provider: 'v8',
7
+ reporter: ['text', 'json', 'json-summary'],
8
+ include: ['packages/**/src/**/*.ts'],
9
+ exclude: ['**/index.ts', '**/types.ts'],
10
+ },
11
+ },
12
+ });
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
@@ -0,0 +1,30 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install {{name}}
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { hello } from '{{name}}';
15
+
16
+ hello('World');
17
+ ```
18
+
19
+ ## Development
20
+
21
+ ```bash
22
+ npm install
23
+ npm run build
24
+ npm test
25
+ npm run lint
26
+ ```
27
+
28
+ ## License
29
+
30
+ MIT
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.0.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./dist/index.mjs",
8
+ "./package.json": "./package.json"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsdown",
15
+ "clean": "rimraf dist",
16
+ "lint": "concurrently npm:lint:* --prefixColors auto",
17
+ "lint:engines": "ls-engines",
18
+ "lint:format": "biome check --write",
19
+ "lint:lockfile": "lockfile-lint",
20
+ "lint:package": "npmPkgJsonLint .",
21
+ "lint:sort_package": "sort-package-json \"package.json\"",
22
+ "lint:typecheck": "tsc --noEmit",
23
+ "prepare": "lefthook install",
24
+ "test": "vitest run",
25
+ "test:coverage": "vitest run --coverage"
26
+ },
27
+ "keywords": [],
28
+ "author": "{{author}}",
29
+ "license": "MIT",
30
+ "engines": {
31
+ "node": ">= 22"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public",
35
+ "provenance": true
36
+ },
37
+ "devDependencies": {}
38
+ }
@@ -0,0 +1,3 @@
1
+ export function hello(name: string): string {
2
+ return `Hello, ${name}!`;
3
+ }