Manage Projen-based projects for ClickUp TypeScript and CDK libraries with opinionated configurations, automated workflows, and JSII compatibility.
Manage Projen-based TypeScript and AWS CDK projects using ClickUp's standardized project types from the `clickup-projen` library.
This skill helps you work with Projen-managed projects, particularly those using ClickUp's custom project types. Projen is a project configuration management tool that generates and maintains project files from a single `.projenrc` configuration.
**Never** run npm/yarn/pnpm commands directly. Always use projen tasks:
```bash
npx projen <task-name>
```
Check available tasks in `.projen/tasks.json` for descriptions and steps.
Files with comments like "~~ Generated by projen. To modify..." must **never** be edited directly. Instead:
1. Modify `.projenrc.ts` (or `.projenrc.py`, `.projenrc.json`)
2. Run `npx projen` to regenerate files
3. Review and commit changes
1. Make changes to `.projenrc` configuration
2. Run `npx projen` to synthesize
3. Run `pnpm install` if package.json changed
4. Review generated file changes
5. Commit both `.projenrc` and generated files
```bash
pnpm projen
pnpm build
pnpm test
pnpm test:watch
pnpm test path/to/test-file.test.ts
pnpm compile
pnpm eslint
```
A task is complete only when:
**`ClickUpTypeScriptProject`** - Base TypeScript library
**`ClickUpCdkConstructLibrary`** - Reusable CDK constructs
**`ClickUpCdkTypeScriptApp`** - CDK applications
Uses deep merge pattern: defaults → project options → forced overrides
```typescript
// Example .projenrc.ts
const project = new ClickUpCdkConstructLibrary({
name: 'cdk-my-construct',
cdkVersion: '2.189.0',
// Options deep-merged with opinionated defaults
});
project.synth();
```
Add dependencies through projen configuration, **not** package.json:
```typescript
// In .projenrc.ts
project.addDeps('aws-cdk-lib');
project.addDevDeps('aws-cdk');
project.addPeerDeps('constructs');
```
Then run `npx projen` to update package.json and `pnpm install`.
Build a local tarball to test in another project:
```bash
pnpm build
projen new --from /path/to/clickup-projen/dist/js/[email protected] <project-type>
```
Tests use Jest snapshots extensively:
```bash
pnpm test
pnpm test -- -u
```
Consumers need GitHub PAT configured:
```bash
cat >> ~/.npmrc <<EOF
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_PAT
@time-loop:registry=https://npm.pkg.github.com/
EOF
```
PAT requires `read:packages` scope.
```
.
├── .projenrc.ts # Project configuration (edit this)
├── .projen/
│ └── tasks.json # Available tasks
├── src/ # Source TypeScript files
├── test/ # Jest tests with snapshots
├── dist/ # Built JSII artifacts (generated)
└── lib/ # Compiled TypeScript (generated)
```
Generated projects include:
When extending project types:
1. Create/modify module in `src/`
2. Add corresponding test in `test/`
3. Export from `src/index.ts` if public
4. Run `pnpm projen` to regenerate API.md
5. Run `pnpm test -- -u` to update snapshots
6. Verify with local tarball test
Centralized in `src/utils/parameters.ts`:
Update once to cascade to all consumers.
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/projen-project-management-uaiw0m/raw