@kitschpatrol/create-project 1.0.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 (114) hide show
  1. package/.github/workflows/github-release.yml +81 -0
  2. package/.github/workflows/set-github-metadata.yml +21 -0
  3. package/.prettierignore +8 -0
  4. package/.remarkrc.js +5 -0
  5. package/.vscode/extensions.json +11 -0
  6. package/.vscode/settings.json +66 -0
  7. package/cspell.config.js +3 -0
  8. package/dist/index.js +3602 -0
  9. package/eslint.config.ts +19 -0
  10. package/knip.config.ts +5 -0
  11. package/license.txt +21 -0
  12. package/mdat.config.ts +3 -0
  13. package/package.json +49 -0
  14. package/pnpm-workspace.yaml +7 -0
  15. package/prettier.config.js +3 -0
  16. package/readme.md +98 -0
  17. package/src/index.ts +9 -0
  18. package/src/template.ts +72 -0
  19. package/stylelint.config.js +3 -0
  20. package/templates/cli/.github/workflows/github-release.yml +81 -0
  21. package/templates/cli/.github/workflows/set-github-metadata.yml +21 -0
  22. package/templates/cli/.prettierignore +8 -0
  23. package/templates/cli/.remarkrc.js +6 -0
  24. package/templates/cli/.vscode/extensions.json +8 -0
  25. package/templates/cli/.vscode/settings.json +68 -0
  26. package/templates/cli/cspell.config.js +3 -0
  27. package/templates/cli/eslint.config.ts +5 -0
  28. package/templates/cli/knip.config.ts +3 -0
  29. package/templates/cli/license.txt +21 -0
  30. package/templates/cli/mdat.config.ts +3 -0
  31. package/templates/cli/package.json +54 -0
  32. package/templates/cli/prettier.config.js +3 -0
  33. package/templates/cli/readme.md +45 -0
  34. package/templates/cli/src/index.ts +30 -0
  35. package/templates/cli/tsconfig.json +7 -0
  36. package/templates/cli+library/.github/workflows/github-release.yml +81 -0
  37. package/templates/cli+library/.github/workflows/set-github-metadata.yml +21 -0
  38. package/templates/cli+library/.prettierignore +8 -0
  39. package/templates/cli+library/.remarkrc.js +6 -0
  40. package/templates/cli+library/.vscode/extensions.json +8 -0
  41. package/templates/cli+library/.vscode/settings.json +68 -0
  42. package/templates/cli+library/cspell.config.js +3 -0
  43. package/templates/cli+library/eslint.config.ts +5 -0
  44. package/templates/cli+library/knip.config.ts +3 -0
  45. package/templates/cli+library/license.txt +21 -0
  46. package/templates/cli+library/mdat.config.ts +3 -0
  47. package/templates/cli+library/package.json +62 -0
  48. package/templates/cli+library/prettier.config.js +3 -0
  49. package/templates/cli+library/readme.md +53 -0
  50. package/templates/cli+library/src/bin/cli.ts +42 -0
  51. package/templates/cli+library/src/lib/index.ts +13 -0
  52. package/templates/cli+library/tsconfig.build.json +8 -0
  53. package/templates/cli+library/tsconfig.json +7 -0
  54. package/templates/cli+library/tsdown.config.ts +17 -0
  55. package/templates/library/.github/workflows/github-release.yml +81 -0
  56. package/templates/library/.github/workflows/set-github-metadata.yml +21 -0
  57. package/templates/library/.prettierignore +8 -0
  58. package/templates/library/.remarkrc.js +6 -0
  59. package/templates/library/.vscode/extensions.json +8 -0
  60. package/templates/library/.vscode/settings.json +68 -0
  61. package/templates/library/cspell.config.js +3 -0
  62. package/templates/library/eslint.config.ts +5 -0
  63. package/templates/library/knip.config.ts +3 -0
  64. package/templates/library/license.txt +21 -0
  65. package/templates/library/mdat.config.ts +3 -0
  66. package/templates/library/package.json +58 -0
  67. package/templates/library/prettier.config.js +3 -0
  68. package/templates/library/readme.md +43 -0
  69. package/templates/library/src/index.ts +13 -0
  70. package/templates/library/tsconfig.build.json +8 -0
  71. package/templates/library/tsconfig.json +7 -0
  72. package/templates/minimal/.github/workflows/github-release.yml +81 -0
  73. package/templates/minimal/.github/workflows/set-github-metadata.yml +21 -0
  74. package/templates/minimal/.prettierignore +8 -0
  75. package/templates/minimal/.remarkrc.js +6 -0
  76. package/templates/minimal/.vscode/extensions.json +9 -0
  77. package/templates/minimal/.vscode/settings.json +68 -0
  78. package/templates/minimal/cspell.config.js +3 -0
  79. package/templates/minimal/eslint.config.ts +5 -0
  80. package/templates/minimal/knip.config.ts +3 -0
  81. package/templates/minimal/license.txt +21 -0
  82. package/templates/minimal/mdat.config.ts +3 -0
  83. package/templates/minimal/package.json +46 -0
  84. package/templates/minimal/prettier.config.js +3 -0
  85. package/templates/minimal/readme.md +27 -0
  86. package/templates/minimal/script.ts +1 -0
  87. package/templates/minimal/stylelint.config.js +3 -0
  88. package/templates/minimal/tsconfig.build.json +8 -0
  89. package/templates/minimal/tsconfig.json +7 -0
  90. package/templates/web/.github/workflows/github-release.yml +81 -0
  91. package/templates/web/.github/workflows/set-github-metadata.yml +21 -0
  92. package/templates/web/.prettierignore +8 -0
  93. package/templates/web/.remarkrc.js +6 -0
  94. package/templates/web/.vscode/extensions.json +9 -0
  95. package/templates/web/.vscode/settings.json +68 -0
  96. package/templates/web/cspell.config.js +3 -0
  97. package/templates/web/eslint.config.ts +5 -0
  98. package/templates/web/index.html +13 -0
  99. package/templates/web/knip.config.ts +3 -0
  100. package/templates/web/license.txt +21 -0
  101. package/templates/web/mdat.config.ts +3 -0
  102. package/templates/web/package.json +52 -0
  103. package/templates/web/prettier.config.js +3 -0
  104. package/templates/web/public/vite.svg +35 -0
  105. package/templates/web/readme.md +27 -0
  106. package/templates/web/src/counter.ts +15 -0
  107. package/templates/web/src/main.ts +24 -0
  108. package/templates/web/src/style.css +102 -0
  109. package/templates/web/src/typescript.svg +14 -0
  110. package/templates/web/stylelint.config.js +3 -0
  111. package/templates/web/tsconfig.build.json +8 -0
  112. package/templates/web/tsconfig.json +7 -0
  113. package/tsconfig.build.json +8 -0
  114. package/tsconfig.json +7 -0
@@ -0,0 +1,19 @@
1
+ import { eslintConfig } from '@kitschpatrol/eslint-config'
2
+
3
+ export default eslintConfig(
4
+ {
5
+ // Enable as needed:
6
+ // astro: true,
7
+ // react: true,
8
+ // svelte: true,
9
+ type: 'lib',
10
+ },
11
+ {
12
+ basePath: 'templates/cli',
13
+ files: ['package.json'],
14
+ rules: {
15
+ 'json-package/valid-author': 'off',
16
+ 'json-package/valid-name': 'off',
17
+ },
18
+ },
19
+ )
package/knip.config.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { knipConfig } from '@kitschpatrol/knip-config'
2
+
3
+ export default knipConfig({
4
+ ignore: ['templates/**/*'],
5
+ })
package/license.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Eric Mika
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/mdat.config.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { mdatConfig } from '@kitschpatrol/mdat-config'
2
+
3
+ export default mdatConfig()
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@kitschpatrol/create-project",
3
+ "version": "1.0.0",
4
+ "description": "Kitschpatrol's TypeScript project templates.",
5
+ "keywords": [
6
+ "cli",
7
+ "template",
8
+ "bingo"
9
+ ],
10
+ "homepage": "https://github.com/kitschpatrol/create-project",
11
+ "bugs": "https://github.com/kitschpatrol/create-project/issues",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/kitschpatrol/create-project.git"
15
+ },
16
+ "license": "MIT",
17
+ "author": {
18
+ "name": "Eric Mika",
19
+ "email": "eric@ericmika.com",
20
+ "url": "https://ericmika.com"
21
+ },
22
+ "type": "module",
23
+ "bin": "dist/index.js",
24
+ "dependencies": {
25
+ "bingo": "^0.5.16",
26
+ "bingo-fs": "^0.5.5",
27
+ "bingo-handlebars": "^0.1.0"
28
+ },
29
+ "devDependencies": {
30
+ "@kitschpatrol/shared-config": "^5.7.2",
31
+ "bumpp": "^10.3.1",
32
+ "tsdown": "^0.15.7",
33
+ "typescript": "~5.9.3",
34
+ "zod": "^3.25.76"
35
+ },
36
+ "engines": {
37
+ "node": ">=20.19.0"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "scripts": {
43
+ "build": "tsdown",
44
+ "clean": "git rm -f pnpm-lock.yaml ; git clean -fdX",
45
+ "fix": "ksc fix",
46
+ "lint": "ksc lint",
47
+ "release": "bumpp --commit 'Release: %s' && pnpm run build && pnpm publish --otp $(op read 'op://Personal/Npmjs/one-time password?attribute=otp')"
48
+ }
49
+ }
@@ -0,0 +1,7 @@
1
+ packages:
2
+ - templates/*
3
+
4
+ onlyBuiltDependencies:
5
+ - esbuild
6
+ - puppeteer
7
+ - unrs-resolver
@@ -0,0 +1,3 @@
1
+ import { prettierConfig } from '@kitschpatrol/prettier-config'
2
+
3
+ export default prettierConfig()
package/readme.md ADDED
@@ -0,0 +1,98 @@
1
+ <!--+ Warning: Content inside HTML comment blocks was generated by mdat and may be overwritten. +-->
2
+
3
+ <!-- title -->
4
+
5
+ # @kitschpatrol/create-project
6
+
7
+ <!-- /title -->
8
+
9
+ <!-- badges -->
10
+
11
+ [![NPM Package @kitschpatrol/create-project](https://img.shields.io/npm/v/@kitschpatrol/create-project.svg)](https://npmjs.com/package/@kitschpatrol/create-project)
12
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
+
14
+ <!-- /badges -->
15
+
16
+ <!-- short-description -->
17
+
18
+ **Kitschpatrol's TypeScript project templates.**
19
+
20
+ <!-- /short-description -->
21
+
22
+ ## Overview
23
+
24
+ This repository contains very basic starter templates for TypeScript projects integrating [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config).
25
+
26
+ The lint tools and rules that come along with [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) are quite opinionated and draconian, and won't be to everyone's taste.
27
+
28
+ The templates use [tsdown](https://tsdown.dev/) for building TypeScript libraries and Node-based CLI tools, and [Vite](https://vite.dev/) for web projects. [Bingo](https://www.create.bingo/) is used for the project templating system itself.
29
+
30
+ ## Getting started
31
+
32
+ ### Dependencies
33
+
34
+ [Node.js](https://nodejs.org/) 20.19.0 or higher and [pnpm](https://pnpm.io/) are required.
35
+
36
+ ## Usage
37
+
38
+ ### Create a new project
39
+
40
+ ```sh
41
+ pnpm create @kitschpatrol/project
42
+ ```
43
+
44
+ ### CLI options
45
+
46
+ ```txt
47
+ Bingo template options:
48
+
49
+ --directory (string): What local directory path to run under
50
+ npx new-project --directory my-fancy-project
51
+
52
+ --help (string): Prints help text.
53
+ npx new-project --help
54
+
55
+ --mode ("setup" | "transition"): Which mode to run in.
56
+ npx new-project --mode setup
57
+ npx new-project --mode transition
58
+
59
+ --offline (boolean): Whether to run in an "offline" mode that skips network requests.
60
+ npx new-project --offline
61
+
62
+ --version (boolean): Prints package versions.
63
+ npx new-project --version
64
+
65
+ Kitschpatrol Create Project options:
66
+
67
+ --type (enum): The type of project to create.
68
+ --author-name (string): The name of the author.
69
+ --author-email (string): The email of the author.
70
+ --author-url (string): The URL of the author.
71
+ --cli-command-name (string): CLI command name (if applicable).
72
+ --github-owner (string): The owner of the future repository.
73
+ --github-repository (string): The name of the future repository / package.
74
+ ```
75
+
76
+ ## Maintainers
77
+
78
+ [@kitschpatrol](https://github.com/kitschpatrol)
79
+
80
+ ## Acknowledgments
81
+
82
+ Thanks to [Josh Goldberg](https://www.joshuakgoldberg.com/) for creating the [Bingo](https://www.create.bingo/) template system.
83
+
84
+ <!-- contributing -->
85
+
86
+ ## Contributing
87
+
88
+ [Issues](https://github.com/kitschpatrol/create-project/issues) and pull requests are welcome.
89
+
90
+ <!-- /contributing -->
91
+
92
+ <!-- license -->
93
+
94
+ ## License
95
+
96
+ [MIT](license.txt) © Eric Mika
97
+
98
+ <!-- /license -->
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { runTemplateCLI } from 'bingo'
4
+ import template from './template'
5
+
6
+ process.exitCode = await runTemplateCLI(template, {
7
+ name: 'new-project',
8
+ version: '0.0.0',
9
+ })
@@ -0,0 +1,72 @@
1
+ /* eslint-disable node/no-unsupported-features/node-builtins */
2
+
3
+ import { createTemplate } from 'bingo'
4
+ import { intakeDirectory } from 'bingo-fs'
5
+ import { handlebars } from 'bingo-handlebars'
6
+ import path from 'node:path'
7
+ import { z } from 'zod'
8
+
9
+ export default createTemplate({
10
+ about: {
11
+ name: 'Kitschpatrol Create Project',
12
+ // Show template origin in GitHub... don't want this right now
13
+ // repository: {
14
+ // owner: 'kitschpatrol',
15
+ // repository: 'https://github.com/kitschpatrol/create-project',
16
+ // },
17
+ },
18
+ options: {
19
+ /* eslint-disable perfectionist/sort-objects */
20
+ type: z
21
+ .enum(['minimal', 'web', 'cli', 'library', 'cli+library'])
22
+ .default('minimal')
23
+ .describe('The type of project to create'),
24
+ 'author-name': z.string().default('Eric Mika').describe('The name of the author'),
25
+ 'author-email': z.string().default('eric@ericmika.com').describe('The email of the author'),
26
+ 'author-url': z.string().default('https://ericmika.com').describe('The URL of the author'),
27
+ 'cli-command-name': z
28
+ .string()
29
+ .default('new-project')
30
+ .describe('CLI command name (if applicable)'),
31
+ // "Future" prefix prevents Bingo from creating a GitHub repository
32
+ // Pending resolution of https://github.com/bingo-js/bingo/issues/365
33
+ 'github-owner': z
34
+ .string()
35
+ .default('kitschpatrol')
36
+ .describe('The owner of the future repository'),
37
+ 'github-repository': z
38
+ .string()
39
+ .default(`new-project`)
40
+ .describe('The name of the future repository / package'),
41
+ 'npm-otp-command': z
42
+ .string()
43
+ .default("op read 'op://Personal/Npmjs/one-time password?attribute=otp'")
44
+ .describe('A shell command that returns your one-time password for publishing to npm'),
45
+ /* eslint-enable perfectionist/sort-objects */
46
+ },
47
+ async produce(params) {
48
+ const { options } = params
49
+
50
+ return {
51
+ files: {
52
+ ...(await intakeDirectory(path.join(import.meta.dirname, `../templates/${options.type}`), {
53
+ exclude: /node_modules|pnpm-lock\.yaml/,
54
+ })),
55
+ 'license.txt': await handlebars(
56
+ path.join(import.meta.dirname, `../templates/${options.type}/license.txt`),
57
+ options,
58
+ ),
59
+ 'package.json': await handlebars(
60
+ path.join(import.meta.dirname, `../templates/${options.type}/package.json`),
61
+ options,
62
+ ),
63
+ },
64
+ scripts: [
65
+ {
66
+ commands: ['pnpm install', 'pnpm run build', 'pnpm run fix'],
67
+ phase: 0,
68
+ },
69
+ ],
70
+ }
71
+ },
72
+ })
@@ -0,0 +1,3 @@
1
+ import { stylelintConfig } from '@kitschpatrol/stylelint-config'
2
+
3
+ export default stylelintConfig()
@@ -0,0 +1,81 @@
1
+ name: Create GitHub Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v[0-9]*'
7
+
8
+ jobs:
9
+ build:
10
+ name: Create Release
11
+ runs-on: ubuntu-latest
12
+ env:
13
+ ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
14
+ IS_VALID_COMMIT: false
15
+ TAG_NAME: ''
16
+
17
+ steps:
18
+ - name: Checkout
19
+ uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - name: Log Token Type
24
+ run: |
25
+ if [ ${{ env.ACCESS_TOKEN }} == ${{ secrets.GITHUB_TOKEN }} ]; then
26
+ echo "🗝️ Authenticated with GitHub Token"
27
+ else
28
+ echo "🔑 Authenticated with Personal Access token"
29
+ fi
30
+
31
+ - name: Validate Tag and Branch
32
+ id: validation
33
+ run: |
34
+ TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1)
35
+ echo "🏷️ Tag for commit is: $TAG"
36
+ BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs)
37
+ if [[ -z "$BRANCH" ]]; then
38
+ echo "🚨 Tag is not on main branch"
39
+ else
40
+ echo "🕊️ Current branch is: $BRANCH"
41
+ fi
42
+ if [[ -z "$TAG" || -z "$BRANCH" ]]; then
43
+ echo "IS_VALID_COMMIT=false" >> "$GITHUB_ENV"
44
+ echo "TAG_NAME=''" >> "$GITHUB_ENV"
45
+ else
46
+ echo "IS_VALID_COMMIT=true" >> "$GITHUB_ENV"
47
+ echo "TAG_NAME=$TAG" >> "$GITHUB_ENV"
48
+ fi
49
+
50
+ - name: Release Notes
51
+ if: env.IS_VALID_COMMIT == 'true'
52
+ id: release-notes
53
+ uses: kitschpatrol/github-action-release-changelog@v2
54
+
55
+ - name: Release
56
+ if: env.IS_VALID_COMMIT == 'true'
57
+ id: release
58
+ uses: kitschpatrol/github-action-release@v2
59
+ with:
60
+ token: ${{ env.ACCESS_TOKEN }}
61
+ draft: false
62
+ prerelease: false
63
+ name: ${{ env.TAG_NAME }}
64
+ tag_name: ${{ env.TAG_NAME }}
65
+ body: |
66
+ ${{ steps.release-notes.outputs.changelog }}
67
+ files: |
68
+ readme.md
69
+ README.md
70
+ LICENSE
71
+ license.txt
72
+ CHANGELOG
73
+ CHANGELOG.md
74
+ changelog.md
75
+
76
+ - name: Log Release Details
77
+ if: env.IS_VALID_COMMIT == 'true'
78
+ run: |
79
+ echo "📦 Successfully released: ${{ env.TAG_NAME }}"
80
+ echo "🔗 Release URL: ${{ steps.release.outputs.url }}"
81
+ echo "🪪 Release ID: ${{ steps.release.outputs.id }}"
@@ -0,0 +1,21 @@
1
+ name: Set GitHub Metadata
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ workflow_dispatch: {}
6
+
7
+ jobs:
8
+ build:
9
+ name: Set GitHub Metadata
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Sync Package info to GitHub
19
+ uses: kitschpatrol/github-action-repo-sync@v3
20
+ with:
21
+ TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
@@ -0,0 +1,8 @@
1
+ # Prettier Ignore
2
+ # Also respects .gitignore
3
+
4
+ # @kitschpatrol/prettier-config boilerplate
5
+ pnpm-lock.yaml
6
+ package-lock.json
7
+
8
+ # Customizations
@@ -0,0 +1,6 @@
1
+ import { remarkConfig } from '@kitschpatrol/remark-config'
2
+
3
+ export default remarkConfig({
4
+ // Useful if the repository is not yet pushed to a remote.
5
+ rules: [['remarkValidateLinks', { repository: false }]],
6
+ })
@@ -0,0 +1,8 @@
1
+ {
2
+ "recommendations": [
3
+ "dbaeumer.vscode-eslint",
4
+ "esbenp.prettier-vscode",
5
+ "streetsidesoftware.code-spell-checker",
6
+ "unifiedjs.vscode-mdx"
7
+ ]
8
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "explorer.fileNesting.enabled": true,
3
+ "explorer.fileNesting.expand": false,
4
+ "explorer.fileNesting.patterns": {
5
+ "*.js": "*.ts.map, *.js.map, *.d.ts, *.d.ts.map, *.d.js.map",
6
+ "*.ts": "*.ts.map, *.d.ts, *.d.ts.map",
7
+ ".env": ".env.*",
8
+ "package.json": ".*ignore, .*rc, .*.js, .*.mjs, .*.cjs, .*.ts, .*.mts, .*.cts, .*.json, .*.jsonc, .*.json5, .*.yml, .*.yaml, *config.js, *config.mjs, *config.cjs, *config.ts, *config.mts, *config.cts, *config.json, *config.jsonc, *config.json5, *config.yml, *config.yaml, pnpm*, workspace*, yarn*, lerna.json, netlify.toml, package-lock.json, turbo.json, vercel.json, wrangler.toml, yarn.lock",
9
+ "readme.md": "authors*, backers*, changelog*, citation*, code_of_conduct*, contributing*, contributors*, copying*, credits*, governance*, history*, license*, maintainers*, release_notes*, security*, sponsors*"
10
+ },
11
+ "typescript.enablePromptUseWorkspaceTsdk": true,
12
+ "typescript.tsdk": "node_modules/typescript/lib",
13
+ "editor.codeActionsOnSave": {
14
+ "source.fixAll": "explicit",
15
+ "source.organizeImports": "never"
16
+ },
17
+ "eslint.enable": true,
18
+ "eslint.runtime": "node",
19
+ "eslint.validate": [
20
+ "astro",
21
+ "html",
22
+ "javascript",
23
+ "javascriptreact",
24
+ "json",
25
+ "json5",
26
+ "jsonc",
27
+ "markdown",
28
+ "mdx",
29
+ "svelte",
30
+ "toml",
31
+ "typescript",
32
+ "typescriptreact",
33
+ "xml",
34
+ "yaml"
35
+ ],
36
+ "eslint.useFlatConfig": true,
37
+ "cSpell.enabled": true,
38
+ "cSpell.workspaceRootPath": ".",
39
+ "[astro]": {
40
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
41
+ },
42
+ "[gitignore]": {
43
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
44
+ },
45
+ "[ruby]": {
46
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
47
+ },
48
+ "[shellscript]": {
49
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
50
+ },
51
+ "[svelte]": {
52
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
53
+ },
54
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
55
+ "editor.formatOnSave": true,
56
+ "prettier.documentSelectors": [
57
+ "**/.eslintignore",
58
+ "**/.node-version",
59
+ "**/.npmrc",
60
+ "**/.prettierignore",
61
+ "**/*.astro",
62
+ "**/*.rb",
63
+ "**/*.svelte"
64
+ ],
65
+ "prettier.enable": true,
66
+ "stylelint.enable": true,
67
+ "stylelint.validate": ["css", "html", "svelte", "astro"]
68
+ }
@@ -0,0 +1,3 @@
1
+ import { cspellConfig } from '@kitschpatrol/cspell-config'
2
+
3
+ export default cspellConfig()
@@ -0,0 +1,5 @@
1
+ import { eslintConfig } from '@kitschpatrol/eslint-config'
2
+
3
+ export default eslintConfig({
4
+ type: 'lib',
5
+ })
@@ -0,0 +1,3 @@
1
+ import { knipConfig } from '@kitschpatrol/knip-config'
2
+
3
+ export default knipConfig()
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 {{author-name}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ import { mdatConfig } from '@kitschpatrol/mdat-config'
2
+
3
+ export default mdatConfig()
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "{{github-repository}}",
3
+ "version": "0.0.0",
4
+ "description": "A {{type}} project.",
5
+ "keywords": [
6
+ "cli",
7
+ "npm-package"
8
+ ],
9
+ "homepage": "https://github.com/{{github-owner}}/{{github-repository}}",
10
+ "bugs": "https://github.com/{{github-owner}}/{{github-repository}}/issues",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/{{futureGitHubOwner}}/{{github-repository}}.git"
14
+ },
15
+ "license": "MIT",
16
+ "author": {
17
+ "name": "{{author-name}}",
18
+ "email": "{{author-email}}",
19
+ "url": "{{author-url}}"
20
+ },
21
+ "type": "module",
22
+ "bin": {
23
+ "{{cli-command-name}}": "dist/index.js"
24
+ },
25
+ "files": [
26
+ "dist/*"
27
+ ],
28
+ "scripts": {
29
+ "build": "tsdown --dts false",
30
+ "clean": "git rm -f pnpm-lock.yaml ; git clean -fdX",
31
+ "fix": "ksc fix",
32
+ "lint": "ksc lint",
33
+ "release": "bumpp --commit 'Release: %s' && pnpm run build && pnpm publish --otp $({{npm-otp-command}})",
34
+ "test": "echo \"Error: no test specified\" && exit 1"
35
+ },
36
+ "dependencies": {
37
+ "@types/node": "^20.19.21",
38
+ "@types/yargs": "^17.0.33",
39
+ "yargs": "^17.7.2"
40
+ },
41
+ "devDependencies": {
42
+ "@kitschpatrol/shared-config": "^5.7.2",
43
+ "bumpp": "^10.3.1",
44
+ "tsdown": "^0.15.7",
45
+ "typescript": "~5.9.3"
46
+ },
47
+ "packageManager": "pnpm@10.18.3",
48
+ "engines": {
49
+ "node": ">=20.19.0"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ }
54
+ }
@@ -0,0 +1,3 @@
1
+ import { prettierConfig } from '@kitschpatrol/prettier-config'
2
+
3
+ export default prettierConfig()
@@ -0,0 +1,45 @@
1
+ <!--+ Warning: Content inside HTML comment blocks was generated by mdat and may be overwritten. +-->
2
+
3
+ <!-- title -->
4
+
5
+ <!-- badges -->
6
+
7
+ <!-- short-description -->
8
+
9
+ ## Overview
10
+
11
+ ## Getting started
12
+
13
+ ### Dependencies
14
+
15
+ ### Installation
16
+
17
+ ## Usage
18
+
19
+ ### CLI
20
+
21
+ <!-- cli-help -->
22
+
23
+ ### Examples
24
+
25
+ ## Background
26
+
27
+ ### Motivation
28
+
29
+ ### Implementation notes
30
+
31
+ ### Similar projects
32
+
33
+ ## The future
34
+
35
+ ## Maintainers
36
+
37
+ _List maintainer(s) for a repository, along with one way of contacting them (e.g. GitHub link or email)._
38
+
39
+ ## Acknowledgments
40
+
41
+ _State anyone or anything that significantly helped with the development of your project. State public contact hyper-links if applicable._
42
+
43
+ <!-- contributing -->
44
+
45
+ <!-- license -->