Skip to content

Commit 52eb420

Browse files
committed
chore: set up @pleaseai/code-style monorepo
- Add @pleaseai/eslint-config wrapping @antfu/eslint-config with PleaseAI defaults - Configure Turborepo for monorepo build orchestration - Set up release-please for automated versioning and npm publishing - Add tsdown (unbundle mode) for TypeScript bundling with clean dts output - Add root eslint.config.ts for dogfooding - Update editorconfig indent to 2 spaces for JS/TS files - Add .gitignore, root tsconfig.json
0 parents  commit 52eb420

19 files changed

Lines changed: 437 additions & 0 deletions

.claude/settings.json

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
{
2+
"env": {
3+
"ENABLE_TOOL_SEARCH": "true",
4+
"CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS": "40000",
5+
"CLAUDE_CODE_DISABLE_AUTO_MEMORY": "0",
6+
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
7+
},
8+
"enabledPlugins": {
9+
"claude-code-setup@passionfactory": true,
10+
"standards@passionfactory": true,
11+
"please@passionfactory": true,
12+
"github@passionfactory": true,
13+
"bun@passionfactory": true,
14+
"context@passionfactory": true,
15+
"testing@passionfactory": true,
16+
"asana@passionfactory": true,
17+
"backend@passionfactory": true,
18+
"dev-tools@passionfactory": true,
19+
"frontend@passionfactory": true,
20+
"genkit@passionfactory": true,
21+
"graphql@passionfactory": true,
22+
"review@passionfactory": true,
23+
"reflexion@passionfactory": false,
24+
"research@passionfactory": true,
25+
"tidy-first@passionfactory": true,
26+
"worktree@passionfactory": true,
27+
"antfu@pleaseai": true,
28+
"vitest@pleaseai": true,
29+
"tsdown@pleaseai": true,
30+
"spec-kit@pleaseai": true,
31+
"code-review@pleaseai": true,
32+
"claude-md-management@pleaseai": true,
33+
"gatekeeper@pleaseai": true,
34+
"fetch@pleaseai": true,
35+
"markitdown@pleaseai": true,
36+
"typescript-lsp@code-intelligence": true,
37+
"eslint-lsp@code-intelligence": true,
38+
"ralph-loop@claude-plugins-official": true,
39+
"ast-grep@pleaseai": true
40+
},
41+
"extraKnownMarketplaces": {
42+
"passionfactory": {
43+
"source": {
44+
"source": "github",
45+
"repo": "chatbot-pf/engineering-standards"
46+
},
47+
"autoUpdate": true
48+
},
49+
"pleaseai": {
50+
"source": {
51+
"source": "github",
52+
"repo": "pleaseai/claude-code-plugins"
53+
},
54+
"autoUpdate": true
55+
},
56+
"mastra-agent-skills": {
57+
"source": {
58+
"source": "github",
59+
"repo": "amondnet/mastra-agent-skills"
60+
},
61+
"autoUpdate": true
62+
},
63+
"code-intelligence": {
64+
"source": {
65+
"source": "github",
66+
"repo": "chatbot-pf/code-intelligence"
67+
},
68+
"autoUpdate": true
69+
}
70+
},
71+
"language": "en",
72+
"hooks": {
73+
"SessionStart": [
74+
{
75+
"matcher": "startup",
76+
"hooks": [
77+
{
78+
"type": "command",
79+
"command": "bun install --ignore-scripts"
80+
}
81+
]
82+
}
83+
]
84+
}
85+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Release Please
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: write
10+
pull-requests: write
11+
12+
jobs:
13+
release-please:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
releases_created: ${{ steps.release.outputs.releases_created }}
17+
eslint-config-released: ${{ steps.release.outputs['packages/eslint-config--release_created'] }}
18+
prettier-config-released: ${{ steps.release.outputs['packages/perttier-config--release_created'] }}
19+
steps:
20+
- uses: googleapis/release-please-action@v4
21+
id: release
22+
with:
23+
token: ${{ secrets.GITHUB_TOKEN }}
24+
config-file: release-please-config.json
25+
manifest-file: .release-please-manifest.json
26+
27+
publish:
28+
needs: release-please
29+
if: ${{ needs.release-please.outputs.releases_created == 'true' }}
30+
runs-on: ubuntu-latest
31+
steps:
32+
- uses: actions/checkout@v4
33+
34+
- uses: oven-sh/setup-bun@v2
35+
with:
36+
bun-version: latest
37+
38+
- name: Install dependencies
39+
run: bun install
40+
41+
- name: Build
42+
run: bun run build
43+
44+
- name: Set npm auth token
45+
run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> ~/.npmrc
46+
env:
47+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
48+
49+
- name: Publish @pleaseai/eslint-config
50+
if: ${{ needs.release-please.outputs.eslint-config-released == 'true' }}
51+
run: bun publish --access public
52+
working-directory: packages/eslint-config
53+
54+
- name: Publish @pleaseai/prettier-config
55+
if: ${{ needs.release-please.outputs.prettier-config-released == 'true' }}
56+
run: bun publish --access public
57+
working-directory: packages/perttier-config

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
node_modules/
2+
dist/
3+
.turbo/
4+
.idea/
5+
.DS_Store
6+
bun.lock

.release-please-manifest.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"packages/eslint-config": "0.0.1",
3+
"packages/perttier-config": "0.0.1"
4+
}

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Passion Factory Inc.
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.

README.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# @pleaseai/code-style
2+
3+
A monorepo providing shared code style configurations for PleaseAI projects — for outsourcing, open source, and internal use.
4+
5+
## Packages
6+
7+
| Package | Description |
8+
|---------|-------------|
9+
| [`@pleaseai/eslint-config`](./packages/eslint-config) | ESLint flat config wrapping `@antfu/eslint-config` with PleaseAI defaults |
10+
| [`@pleaseai/editorconfig`](./packages/editorconfig) | Shared `.editorconfig` for consistent editor settings |
11+
12+
## `@pleaseai/eslint-config`
13+
14+
### Installation
15+
16+
```sh
17+
bun add -D @pleaseai/eslint-config eslint
18+
```
19+
20+
### Usage
21+
22+
```ts
23+
// eslint.config.ts
24+
import pleaseai from '@pleaseai/eslint-config'
25+
26+
export default pleaseai()
27+
```
28+
29+
With custom overrides:
30+
31+
```ts
32+
import pleaseai from '@pleaseai/eslint-config'
33+
34+
export default pleaseai(
35+
{
36+
// Override defaults (typescript, stylistic, gitignore are pre-configured)
37+
vue: true,
38+
},
39+
// Additional flat config entries
40+
{
41+
rules: {
42+
'no-console': 'warn',
43+
},
44+
},
45+
)
46+
```
47+
48+
### Defaults
49+
50+
- `stylistic`: `indent: 2`, `quotes: 'single'`, `semi: false`
51+
- `typescript: true`
52+
- `gitignore: true`
53+
54+
## Development
55+
56+
```sh
57+
bun install
58+
bun run build # Build all packages via Turborepo
59+
bun run lint # Lint the repo itself (dogfooding)
60+
```
61+
62+
### Releasing
63+
64+
```sh
65+
bun run changeset # Create a changeset
66+
bun run version # Bump versions
67+
bun run release # Build + publish to npm
68+
```

eslint.config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import pleaseai from '@pleaseai/eslint-config'
2+
3+
export default pleaseai()

package.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"name": "@pleaseai/code-style-monorepo",
3+
"version": "0.0.1",
4+
"private": true,
5+
"type": "module",
6+
"description": "code-style for PleaseAI",
7+
"repository": {
8+
"type": "git",
9+
"url": "https://github.com/pleaseai/code-style.git"
10+
},
11+
"packageManager": "bun@1.3.10",
12+
"engines": {
13+
"node": ">=22.0.0",
14+
"bun": ">=1.3.10"
15+
},
16+
"workspaces": {
17+
"packages": [
18+
"packages/*"
19+
]
20+
},
21+
"scripts": {
22+
"build": "turbo run build",
23+
"lint": "eslint .",
24+
"lint:fix": "eslint . --fix",
25+
"release": "turbo run build"
26+
},
27+
"devDependencies": {
28+
"@pleaseai/eslint-config": "workspace:*",
29+
"eslint": "^10.0.3",
30+
"turbo": "^2.0.0",
31+
"typescript": "^5.7.0"
32+
}
33+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# http://editorconfig.org
2+
root = true
3+
4+
[*.{js,ts,tsx}]
5+
charset = utf-8
6+
end_of_line = lf
7+
indent_style = space
8+
indent_size = 2
9+
insert_final_newline = true
10+
max_line_length = 120
11+
trim_trailing_whitespace = true
12+
13+
[*.{json,yml,yaml}]
14+
charset = utf-8
15+
end_of_line = lf
16+
indent_style = space
17+
indent_size = 2
18+
insert_final_newline = true
19+
trim_trailing_whitespace = true

packages/editorconfig/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "@pleaseai/editorconfig",
3+
"version": "0.0.1",
4+
"private": true
5+
}

0 commit comments

Comments
 (0)