Skip to main content

api-promotion

Promote iTwin.js APIs to beta or public, or remove @preview, following repository release-tag policy.

Informations de source

Dépôt
iTwin/itwinjs-core
Dernière activité de la source
22 octobre 2026 à 16:33
Langue détectée de SKILL.md
anglais
Étoiles
740
Forks
249

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
api-promotion
description
Promote iTwin.js APIs to beta or public, or remove @preview, following repository release-tag policy.
# API Promotion ## Workflow ### 1. Read policy and establish scope Read `docs/learning/guidelines/release-tags-guidelines.md` and `docs/learning/api-support-policies.md` first. Use those documents to choose release tags and interpret `@preview`; this skill does not define a separate promotion ladder. List the requested symbols, their effective current tags (including inherited tags), and target tags using source and `common/api/<package>.api.md`. If the target or readiness for public support is unclear, confirm it with the user before editing. ### 2. Check promotion dependencies - Check whether a containing API also needs promotion. When promoting a container, preserve the effective tags of members outside the requested scope with explicit member tags where needed; private implementation members need no tags. - Check that consumers can obtain and use the API through supported exports and, where applicable, constructors, factories, or accessors. - Use API Extractor's `ae-incompatible-release-tags` errors to guide same-package signature checks instead of recursively inspecting every referenced class and member. - Manually check cross-package types exposed by the promoted signatures against their source or API reports. Also check for unexported types and types accessible only through `src/internal/` or `internal/cross-package.ts`; `ae-forgotten-export` is suppressed in `tools/build/scripts/extract-api.js`. Include types nested in callbacks, generic constraints, and base types. If a dependency requires promoting additional APIs or changing exports, explain the blocker and confirm the expanded scope before making those changes. ### 3. Update tags and documentation Apply the agreed tags using the policy's placement rules. Review the promoted APIs' documentation against implementation, callers, and tests: - Describe the consumer contract, including relevant preconditions, defaults, errors, side effects, and failure behavior, rather than implementation details. - Use accurate terminology and TSDoc, including documentation on interface fields. - Ensure links resolve to documented, supported APIs; qualify member links with their owning type. Avoid repeating release-tag metadata in prose. ### 4. Verify coverage Find existing tests for the promoted contract, including important failure cases. Reuse sufficient coverage; add focused tests only for gaps, following the package's conventions. Runtime tests should assert behavior, not just invocation. For interfaces and type aliases, verify appropriate compiled usage or type-level coverage rather than inventing a runtime test for each declaration. Read the affected package's `package.json` for its build and test commands. Build before running tests that consume compiled output. Record the targeted test commands and results, or the exact blockers if they cannot run. ### 5. Regenerate and review reports During iteration, use the affected packages' build and `extract-api` scripts, rebuilding changed dependencies first. Resolve diagnostics and review `common/api/<package>.api.md` and `common/api/summary/<package>.exports.csv` for the agreed promotions, preserved member tags, and unintended API changes. Follow `CONTRIBUTING.md` for required validation and pre-push checks; package-local iteration does not replace its clean repository build and API extraction requirement for release-tag changes. Include affected-package lint and documentation builds where required. ### 6. Record the change Follow `CONTRIBUTING.md` for Rush change files in affected published packages (`"type": "none"`), naming the promoted APIs. Add `docs/changehistory/NextVersion.md` guidance for breaking changes or significant features, following the repository's NextVersion rules.
Voir sur GitHub