agentleFS
projenprojen/projen/skills/projen-review/projen-component-design-review/SKILL.md

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
  1. Very specific:

    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 …

    line 60

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

  1. Orient and load your rules. List every symbol the diff adds or changes that is exported: check the export keyword in each changed module, not only re-exports in src/**/index.ts, and every new extends Component / FutureComponent. A changed class or interface without export is not API. For each, name what it is: option struct, component, enum, enum-like class, helper. Read design-rules.md: its rows describe what is worth flagging when you meet it, not a checklist to fill.
  2. Find the precedent. For each new concept, find the closest existing projen component that solves the same shape (Jest for a test tool, ScriptRunner / TypeScriptRunner for a pluggable runner, Eslint / Prettier / Biome for a config-writing tool, Mergify / AutoQueue for a GitHub feature) and read it at main. A design that diverges from precedent without a stated reason is the finding; cite the precedent by file + line.
  3. 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.
  4. Rate by harm and stop. Rate per projen-review-principles and 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 (addTestMatch on Jest) or the name says something the type does not do (enableGithub on a GitHubRepository).
  • 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.

Download now (ZIP)

Trending

More talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 3 mentionsFeb 2026: 3 mentionsMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 1 mentionJun 2026: 0 mentionsJul 2026: 1 mentionAug 2026: 1 mentionSep 2026: 10 mentionsOct 2026: 6 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the projen/projen repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about projen/projen

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

45 more on GitHub

On Hacker News · 1

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.