Contributing to FaasJS
This file is the entry point for contributors and agents developing the FaasJS framework in this monorepo.
Read In Order
contributing/target-users.mdfor product boundaries, target users, supported stacks, and core framework trade-offscontributing/source-of-truth.mdfor edit locations, generated-file rules, and codebase conventionscontributing/validation.mdfor environment requirements and validation commandscontributing/documentation-sync.mdwhen changes may affect docs, generated docs, navigation, or changelog entries; it uses@faasjs/docgenvianpm run docas the docs update and sync tool
By Task
- Product positioning, supported-stack, dependency-policy, or framework-abstraction changes: also follow
contributing/target-users.md - Framework code, templates, images, or contribution-guide changes: follow
contributing/source-of-truth.mdandcontributing/validation.md - Public API, JSDoc, docs, docs navigation, generated docs, or user-facing workflow changes: also follow
contributing/documentation-sync.mdand regenerate derived docs withnpm run doc - Security reports: follow
SECURITY.md
Documentation Flow
- Edit source-of-truth content first: JSDoc in
packages/*/src, English guides inskills/*/references/guidelines/**, and specs inskills/*/references/specs/**. - Keep skill source links within the same skill. Use plain guide/spec names for cross-skill references;
@faasjs/docgeninjects public docs-site links when generatingdocs/**. - Run
npm run docto invoke@faasjs/docgen, which refreshes API Markdown, skill references, generated English published docs, and generated guide indexes. - The docs site build generates
docs/guidelines/**anddocs/specs/**fromskills/*/references/**; do not edit generated docs directly.docs/guidelines/**is not committed, whiledocs/specs/**is refreshed throughnpm run docwhen specs change. - Do not hand-edit generated docs under
packages/*/{classes,functions,interfaces,type-aliases,variables},docs/guidelines/**,docs/specs/**,docs/guidelines/README.md, ordocs/specs/README.md.
Standard Flow
- Check existing discussions and issues before creating a new one.
- Create or confirm the issue with the proper template (
BugorFeature). - Create a branch from
main. - Open a PR that links the issue (
Closes #123). - Wait for CI and review, then merge with squash.
Core Expectations
- Keep each issue and PR focused on one problem or feature.
- Use lowercase branch names with hyphens:
feat/<name>,fix/<name>,docs/<name>,chore/<name>. - Mention affected packages under
packages/*. - Call out breaking changes explicitly.
- Use Conventional Commits.
Review And Merge
mainonly accepts PR merges.- At least 1 approval is required.
- Required checks must pass.
- Resolve all review conversations before merge.
- Merge strategy: Squash and merge.
Release
Releases are handled by maintainers. Do not run release scripts in contributor PRs unless explicitly requested.
Other Ways To Help
- Star or Watch faasjs/faasjs
- Share your FaasJS experience with articles or videos
- Improve docs at faasjs.com
- Sponsor FaasJS