projen-component-design-review
Skill3k starsChanged 28 days agoApache-2.0View on GitHub
projen component and API design reviewer. Use when reviewing a projen pull request that adds or changes a public API: a new Component, project type, option interface, enum, static factory, public property or method, or where code lives (`src/<module>/`, `private/`). Covers jsii-compatible types (literal unions, enum-like classes, enum sentinels), the component model (data holders vs components, add*/remove* methods, scope: IConstruct, FutureComponent factories, interfaces vs concrete components, cross-component options), minimal public surface (getters, private helpers, submodules), the project-model direction (no new GitHubProject features, repository host vs CI/CD provider), dependencies via requestDependency, lifecycle hooks, ScriptRunner, mutually exclusive options and actionable errors.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 60
Extra options or methods the PR does not need: do not ask for configurability, an add*/remove* pair, or a public accessor that no current …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
projen Component Design Review
You review whether the PR's public API and structure fit projen's component model. One question drives the review: would a projen maintainer build it this way, and is every new public name something projen is happy to support in all jsii languages forever? Every public type, option and member a PR exports becomes API in TypeScript, Python, Java, .NET and Go, and removing it later is a breaking change.
Scope gate: judge only the surface THIS PR adds or changes. An awkward pre-existing API the PR merely calls is not its debt. A new project type is the place to apply current patterns instead of copying legacy ones from an older sibling, but do not ask the PR to refactor the older sibling.
You own design. Whether an existing helper or upstream package should have been reused, and whether
the output is correct, is projen-implementation-review. Whether a change breaks existing users, including deprecations, is
projen-compatibility-review. Docblock wording is projen-documentation-review.
The review process
- Orient and load your rules. List every symbol the diff adds or changes that is exported: check the
exportkeyword in each changed module, not only re-exports insrc/**/index.ts, and every newextends Component/FutureComponent. A changed class or interface withoutexportis not API. For each, name what it is: option struct, component, enum, enum-like class, helper. Readdesign-rules.md: its rows describe what is worth flagging when you meet it, not a checklist to fill. - Find the precedent. For each new concept, find the closest existing projen component that solves the
same shape (Jest for a test tool,
ScriptRunner/TypeScriptRunnerfor a pluggable runner,Eslint/Prettier/Biomefor a config-writing tool,Mergify/AutoQueuefor a GitHub feature) and read it atmain. A design that diverges from precedent without a stated reason is the finding; cite the precedent by file + line. - Check the diff against the rules, family by family: jsii types, Component model, Public surface and placement, Project model direction, Dependencies and lifecycle, Options and errors. Judge the shape the diff introduces; do not go looking for affordances it could additionally have.
- Rate by harm and stop. Rate per
projen-review-principlesand the row's tier. When several defects share one cause, give one finding.
What NOT to flag
Beyond the shared exclusions in projen-review-principles:
- Internal code that is not exported: a private helper's shape is not API. Only flag it when it is
exported by accident (see
DES-SURF-PRIVATE-HELPERS). - jsii errors the build already reports: the build runs jsii, so a type jsii rejects fails CI on its
own. Do not report a compile error you have not reproduced. Literal types are the exception: jsii
accepts them and silently widens them (see
DES-JSII-LITERAL-UNION). - Naming bikesheds with no precedent on either side. Raise a name only when an existing component sets
the convention (
addTestMatchon Jest) or the name says something the type does not do (enableGithubon aGitHubRepository). - Breaking-change consequences of a design: that belongs to
projen-compatibility-review. - Future-proofing: "when a second variant is added", "if the tool adds a field", "so the next option lands additively". Design for what the tool offers today.
- A shape the change cannot adopt without breaking users, for example narrowing the type of an existing public option. If the better shape is a breaking change, the current one is the right call.
- Extra options or methods the PR does not need: do not ask for configurability, an
add*/remove*pair, or a public accessor that no current caller needs. - A design point the author has already answered with a reason, precedent in the module, or a maintainer's agreement.
Output
Populate the structured finding fields projen-review-principles defines. This dimension's category is
one of: jsii incompatibility, Component model, Public surface, Code placement, Project model direction,
Dependencies and lifecycle, Options and errors.
Apply projen-review-principles
Apply the shared projen-review-principles skill for the severity scale, evidence order, file:line
discipline, finding format, CONV-* conventions and the 7-comment cap. Each row in
design-rules.md carries its own severity.
Trending
More talk lately.about the whole repository
Who's talking about projen/projen
- awslabs/cdk-eks-blueprints“[FEATURE] - Add multiple language support”GitHub · Jun 18, 2021 · 43 reactions
- emmanuelnk/github-actions-workflow-ts“[Feature Request] zero-dependency library version”GitHub · Sep 21, 2023 · 5 reactions
- dependabot/dependabot-core“Feature request: Projen compatibility”GitHub · Feb 21, 2023 · 5 reactions
- aws/aws-pdk“chore: upgrade projen to ensure pnpm resolution mode is highest by default”GitHub · Apr 27, 2023 · 2 reactions
- aws/jsii“fix(python): bin script python support, test argument passing”GitHub · Sep 21, 2022 · 2 reactions
The biggest 5 of 54 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 54
Talked about on GitHub, Stack Overflow and Hacker News (54 times).
On GitHub · 50
- Jun 18, 2021[FEATURE] - Add multiple language support — awslabs/cdk-eks-blueprints43 reactions · 4 comments
- Sep 21, 2023[Feature Request] zero-dependency library version — emmanuelnk/github-actions-workflow-ts5 reactions · 3 comments
- Feb 21, 2023Feature request: Projen compatibility — dependabot/dependabot-core5 reactions · 2 comments
- Apr 27, 2023chore: upgrade projen to ensure pnpm resolution mode is highest by default — aws/aws-pdk2 reactions · 1 comment
- Sep 21, 2022fix(python): bin script python support, test argument passing — aws/jsii2 reactions · 6 comments
45 more on GitHub
- Feb 1, 2022Add an option to generate a table of contents for large API references — cdklabs/jsii-docgen2 reactions
- Sep 10, 2025chore: use trusted publishing for npm and pypi — tmokmss/deploy-time-build1 reaction
- Nov 29, 2024Track upgrade to `eslint` in projen — awslabs/data-solutions-framework-on-aws1 reaction
- Oct 27, 2023Project Limit Request: projen - 30 GB — pypi/support1 reaction · 1 comment
- Sep 6, 2023JSII compiled Python package fails in Python CDK application [ERR_PACKAGE_PATH_NOT_EXPORTED] — aws/jsii1 reaction · 1 comment
- May 5, 2023fix: bump dependencies to use TS 5.X — aws/aws-pdk1 reaction · 1 comment
- Apr 24, 2023fix(nx-monorepo): use distdir for adding java dependencies — aws/aws-pdk1 reaction · 1 comment
- Aug 23, 2021feat(npm): publish to AWS CodeArtifact — cdklabs/publib1 reaction · 6 comments
- Oct 26, 2026chore(deps-dev): bump projen from 0.99.80 to 0.104.12 — cdklabs/cdk-cicd-wrapper0 reactions
- Oct 19, 2026chore(deps-dev): bump projen from 0.99.80 to 0.104.8 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Oct 18, 2026build(deps): bump the cdk-and-jsii group across 1 directory with 8 updates — pwrdrvr/microapps-core0 reactions
- Oct 12, 2026chore(deps-dev): bump projen from 0.99.80 to 0.104.3 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Oct 8, 2026ESM only on purpose? — dsherret/dax0 reactions · 2 comments
- Oct 6, 2026chore(deps): bump the cdk-projen-jsii group across 1 directory with 7 updates — shutterstock/streaming-sitemaps0 reactions
- Sep 30, 2026build(deps-dev): bump projen from 0.103.22 to 0.103.27 — tarantoj/sqs-replay-backoff0 reactions
- Sep 28, 2026chore(deps-dev): bump projen from 0.99.80 to 0.103.27 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Sep 23, 2026build(deps-dev): bump projen from 0.103.22 to 0.103.24 — tarantoj/sqs-replay-backoff0 reactions · 1 comment
- Sep 21, 2026chore(deps-dev): bump projen from 0.99.80 to 0.103.24 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Sep 16, 2026build(deps-dev): bump projen from 0.103.20 to 0.103.22 — tarantoj/sqs-replay-backoff0 reactions
- Sep 14, 2026chore(deps-dev): bump projen from 0.99.80 to 0.103.23 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Sep 11, 2026Bump js-yaml and projen — JohannesKonings/projen-files-test0 reactions
- Sep 11, 2026chore(deps): bump js-yaml and projen — awslabs/sbt-aws0 reactions
- Sep 7, 2026chore(deps-dev): bump projen from 0.99.80 to 0.103.18 — cdklabs/cdk-cicd-wrapper0 reactions · 1 comment
- Sep 2, 2026build(deps): bump projen from 0.77.6 to 0.104.2 in /packages/otelbin — dash0hq/otelbin0 reactions · 2 comments
- Aug 5, 2026Some projen configuration recommendations — DataDog/datadog-cdk-constructs0 reactions · 1 comment
- Jul 27, 2026Bump brace-expansion and projen — JohannesKonings/projen-files-test0 reactions
- May 18, 2026chore(deps-dev): bump projen from 0.99.17 to 0.99.62 — cdklabs/genai-idp0 reactions
- Feb 23, 2026chore(deps-dev): bump projen from 0.97.0 to 0.99.16 — jumic/pipeline-projen-pipelines0 reactions
- Feb 9, 2026[P1] Auto-detección y generación de workflow para proyectos — joseguillermomoreu-gif/claude-code-auto-skills0 reactions
- Feb 5, 2026build(deps): bump js-yaml and projen — aws-samples/sample-deepseek-ocr-selfhost0 reactions
- Jan 19, 2026projen sample — k70suK3-k06a7ash1/github-action-ts-template0 reactions
- Jan 13, 2026chore(deps): bump the npm_and_yarn group across 1 directory with 9 updates — TechCrazi/influxdb-s3-backup0 reactions
- Jan 11, 2026Remove PAT — cdktn-io/cdktn-provider-project0 reactions · 1 comment
- Nov 14, 2025chore(deps): bump the npm_and_yarn group across 4 directories with 18 updates — etamong/cdk8s0 reactions
- Oct 27, 2025build(deps-dev): bump projen from 0.92.11 to 0.98.4 — yutaro-sakamoto/github-activity-metrics-aws-20 reactions · 1 comment
- May 19, 2025build(deps-dev): bump projen from 0.91.20 to 0.92.6 — yutaro-sakamoto/github-activity-metrics-aws0 reactions
- Mar 25, 2025tag-fox.com — mypdns/matrix0 reactions
- Dec 13, 2024chore: simplify release workflow — mavogel/awscdk-rootmail0 reactions
- Sep 2, 2024Pin Artifact Action versions — open-constructs/projen-pipelines0 reactions
- Jul 22, 2024Projen — rawkode-academy/rawkode-academy0 reactions · 1 comment
- May 29, 2024chore(deps): bump projen from 0.81.15 to 0.81.17 — edelwud/projen-turborepo0 reactions · 1 comment
- Nov 28, 2023chore(deps-dev): bump projen from 0.72.28 to 0.77.3 — lvthillo/cdk-slack-chatbot0 reactions
- May 15, 2023Create CODE_OF_CONDUCT.md — gesad-lab/dome0 reactions
- May 15, 2023Create CONTRIBUTING.md file — gesad-lab/dome0 reactions
- Apr 25, 2023build(deps): bump yaml and projen — alma-cdk/openapix0 reactions · 1 comment
On Stack Overflow · 3
- Aug 24, 2022How does PROJEN help standardize project config across infra/application projects2 votes
- Jul 5, 2022Packaged/include text file or other than .ts file in lib folder after yarn build of typescript project using .projenrc.js1 vote · 1 answer
- Sep 26, 2021AWS CDK - Projen noUnusedLocals1 vote · 2 answers
On Hacker News · 1
- Feb 10, 2024Projen1 point
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- projen-compatibility-reviewSkill
- projen-documentation-reviewSkill
- projen-implementation-reviewSkill
- projen-review-principlesSkill
- projen-testing-reviewSkill
- projen-workflow-security-reviewSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

