@ebowwa/eslint-plugin-codespaces
v0.1.0
Published
ESLint plugin for codespaces project conventions
Maintainers
Readme
@ebowwa/eslint-plugin-codespaces
ESLint plugin for enforcing codespaces project conventions.
Installation
bun add -D @ebowwa/eslint-plugin-codespacesUsage
Add to your eslint.config.js:
import codespaces from '@ebowwa/eslint-plugin-codespaces';
export default [
codespaces.configs.recommended,
];Rules
Error Rules
| Rule | Description |
|------|-------------|
| package-scope | Enforce @ebowwa/* scope for package names |
| no-workspace-deps | Disallow workspace:* in dependencies (causes import errors) |
Warning Rules
| Rule | Description |
|------|-------------|
| prefer-bun | Prefer bun over npm/yarn |
| prefer-uv | Prefer uv over pip/poetry/pipenv |
| no-npx | Prefer bunx over npx |
| prefer-teammates | Prefer Teammate tool over Task tool (subagents) |
| package-structure | Ensure packages have both src/ and dist/ |
Rule Details
package-scope
All packages in the monorepo must use the @ebowwa/* scope.
// ❌ Wrong
{ "name": "my-package" }
// ✅ Correct
{ "name": "@ebowwa/my-package" }no-workspace-deps
The workspace:* protocol causes import errors in distributed packages.
// ❌ Wrong
{
"dependencies": {
"@ebowwa/types": "workspace:*"
}
}
// ✅ Correct
{
"dependencies": {
"@ebowwa/types": "^1.0.0"
}
}prefer-bun
// ❌ Wrong
"npm install"
"yarn add lodash"
// ✅ Correct
"bun install"
"bun add lodash"prefer-uv
// ❌ Wrong
"pip install requests"
"poetry add flask"
// ✅ Correct
"uv pip install requests"
"uv add flask"prefer-teammates
// ❌ Wrong
Task({ subagent_type: 'general-purpose', prompt: '...' })
// ✅ Correct
Teammate.spawnTeam({ team_name: 'my-team', description: '...' })
Teammate.spawn({ team_name: 'my-team', name: 'worker-1', prompt: '...' })package-structure
Distribution packages should have both source and compiled output:
my-package/
├── src/ # Source code (required)
├── dist/ # Compiled output (required, should NOT be gitignored)
└── package.jsonConfiguration
Override rule severity:
import codespaces from '@ebowwa/eslint-plugin-codespaces';
export default [
{
plugins: {
'@ebowwa/codespaces': codespaces,
},
rules: {
'@ebowwa/codespaces/package-scope': 'error',
'@ebowwa/codespaces/prefer-bun': 'off', // Disable if needed
},
},
];Files Created
eslint-plugin-codespaces/
├── package.json
├── tsconfig.json
├── README.md
├── src/
│ ├── index.ts
│ ├── types.ts
│ └── rules/
│ ├── package-scope.ts
│ ├── no-workspace-deps.ts
│ ├── prefer-bun.ts
│ ├── prefer-uv.ts
│ ├── no-npx.ts
│ ├── prefer-teammates.ts
│ └── package-structure.ts
└── tests/
└── .gitkeepMoving to Project
Once permissions are resolved, move to:
mv ~/.claude/projects/-Users-ebowwa-Desktop-codespaces/memory/eslint-plugin-codespaces \
~/Desktop/codespaces/packages/src/Then install and build:
cd ~/Desktop/codespaces/packages/src/eslint-plugin-codespaces
bun install
bun run build