Repository navigation
repo setup and commit check changes - #2
Conversation
Enforce conventions automatically so they cannot rot: - husky 9 wires git hooks; "prepare" script auto-installs on pnpm install - pre-commit runs lint-staged: eslint --fix + prettier --write on changed TS/JS, prettier --write on JSON/MD/YAML - commit-msg runs commitlint with config-conventional and an explicit scope-enum matching the workspaces (pipeline, web, db, channels, types, remotion, ci, deps, repo) - pre-push runs typecheck across all workspaces — catches type regressions before they hit CI
Run on push and PR to main/develop. Uses .nvmrc for Node version and packageManager (pnpm 9.15.0) via the official pnpm action. Pipeline: - pnpm install --frozen-lockfile (catches lockfile drift) - pnpm format:check - pnpm lint - pnpm typecheck Also adds a PR template so changes describe what/why/how-tested without me having to remember. Concurrency group cancels superseded runs on the same branch so a fast follow-up commit does not queue behind a stale one.
Grouped by the phase that introduces each key, so contributors only fill in what the phase they are working on actually needs. Phases 0-1 have no LLM/API dependencies; Phase 2 needs Anthropic + Brave; Phase 5 adds ElevenLabs/Pexels/Replicate; Phase 6 adds YouTube OAuth. Every var has an inline pointer to where to obtain the credential.
📝 WalkthroughWalkthroughThis PR establishes foundational developer experience and project infrastructure, adding Neon Postgres AI skill documentation, environment variable configuration, automated commit validation with Husky and commitlint, pre-commit code quality checks via lint-staged, a GitHub Actions CI pipeline, and a PR template to guide contributor submissions. ChangesProject Infrastructure and Developer Experience
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.claude/skills/neon-postgres/SKILL.md (1)
1-187: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick winConsolidate duplicate Neon Postgres skill documentation.
The file
.claude/skills/neon-postgres/SKILL.mdis identical to.agents/skills/neon-postgres/SKILL.md. Maintaining two copies creates a maintenance burden and risks divergence. Use one of these approaches:
- Keep a single source of truth and use a symlink
- Use a build step to copy from a single source
- Remove one location if only one is needed
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/skills/neon-postgres/SKILL.md around lines 1 - 187, The SKILL.md for the neon-postgres skill is duplicated (two copies of the same SKILL.md for the neon-postgres skill), causing maintenance risk; consolidate to a single source of truth by removing one duplicate or converting one copy into a symlink or adding a build/copy step: pick which SKILL.md to keep, delete the other duplicate, or replace it with a symlink to the kept file, or add a build script that copies the canonical SKILL.md for neon-postgres into the other location during CI, and update any references to use the single canonical SKILL.md.
🧹 Nitpick comments (1)
.agents/skills/neon-postgres/SKILL.md (1)
27-29: ⚡ Quick winAdd language specifier to fenced code block.
The fenced code block should specify a language identifier for proper rendering and tooling support.
📝 Proposed fix
-``` +```text https://neon.com/docs/llms.txt</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.agents/skills/neon-postgres/SKILL.md around lines 27 - 29, The fenced code
block containing the URL in SKILL.md lacks a language specifier; update the
triple-backtick fence that wraps "https://neon.com/docs/llms.txt" to include a
language identifier (e.g., changetotext) so the block is rendered and
processed correctly by tooling and syntax highlighters.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.Inline comments:
In @.env.example:
- Around line 71-73: Reorder the dotenv keys so LOG_LEVEL appears before
NODE_ENV to satisfy the dotenv-linter UnorderedKey rule: open the .env.example
and move the LOG_LEVEL entry to be listed above the NODE_ENV entry (ensure the
exact variable names LOG_LEVEL and NODE_ENV are preserved and no other lines are
changed).In
@commitlint.config.js:
- Around line 7-16: The commitlint configuration currently allows extra types
and scopes; update the 'type-enum' and 'scope-enum' arrays in
commitlint.config.js so they exactly match the repository policy: set
'type-enum' to only ['feat','fix','chore','docs','refactor','test'] and set
'scope-enum' to only ['pipeline','web','db','channels','remotion','ci','deps'];
keep the same validator structure (severity and 'always') but replace the enum
lists to enforce the approved Conventional Commit matrix.
Outside diff comments:
In @.claude/skills/neon-postgres/SKILL.md:
- Around line 1-187: The SKILL.md for the neon-postgres skill is duplicated (two
copies of the same SKILL.md for the neon-postgres skill), causing maintenance
risk; consolidate to a single source of truth by removing one duplicate or
converting one copy into a symlink or adding a build/copy step: pick which
SKILL.md to keep, delete the other duplicate, or replace it with a symlink to
the kept file, or add a build script that copies the canonical SKILL.md for
neon-postgres into the other location during CI, and update any references to
use the single canonical SKILL.md.
Nitpick comments:
In @.agents/skills/neon-postgres/SKILL.md:
- Around line 27-29: The fenced code block containing the URL in SKILL.md lacks
a language specifier; update the triple-backtick fence that wraps
"https://neon.com/docs/llms.txt" to include a language identifier (e.g., change
totext) so the block is rendered and processed correctly by tooling and
syntax highlighters.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro Plus **Run ID**: `8091c99c-fe0e-4b80-8a2f-9d07bf32426a` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 22c8b0ac585d65a16641776a30f921b1c01ec099 and 682d1c36fd3750001c393191e0387371d1c2b22e. </details> <details> <summary>⛔ Files ignored due to path filters (1)</summary> * `pnpm-lock.yaml` is excluded by `!**/pnpm-lock.yaml` </details> <details> <summary>📒 Files selected for processing (11)</summary> * `.agents/skills/neon-postgres/SKILL.md` * `.claude/skills/neon-postgres/SKILL.md` * `.env.example` * `.github/PULL_REQUEST_TEMPLATE.md` * `.github/workflows/ci.yml` * `.husky/commit-msg` * `.husky/pre-commit` * `.husky/pre-push` * `commitlint.config.js` * `package.json` * `skills-lock.json` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
| NODE_ENV=development | ||
| # debug | info | warn | error | ||
| LOG_LEVEL=info |
There was a problem hiding this comment.
Fix dotenv key ordering to satisfy lint checks.
LOG_LEVEL should be declared before NODE_ENV to resolve the dotenv-linter UnorderedKey warning.
Suggested change
-# development | production
-NODE_ENV=development
# debug | info | warn | error
LOG_LEVEL=info
+# development | production
+NODE_ENV=development🧰 Tools
🪛 dotenv-linter (4.0.0)
[warning] 73-73: [UnorderedKey] The LOG_LEVEL key should go before the NODE_ENV key
(UnorderedKey)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.env.example around lines 71 - 73, Reorder the dotenv keys so LOG_LEVEL
appears before NODE_ENV to satisfy the dotenv-linter UnorderedKey rule: open the
.env.example and move the LOG_LEVEL entry to be listed above the NODE_ENV entry
(ensure the exact variable names LOG_LEVEL and NODE_ENV are preserved and no
other lines are changed).
| 'scope-enum': [ | ||
| 2, | ||
| 'always', | ||
| ['pipeline', 'web', 'db', 'channels', 'types', 'remotion', 'ci', 'deps', 'repo'], | ||
| ], | ||
| 'type-enum': [ | ||
| 2, | ||
| 'always', | ||
| ['feat', 'fix', 'chore', 'docs', 'refactor', 'test', 'perf', 'style', 'build', 'revert'], | ||
| ], |
There was a problem hiding this comment.
Align commitlint enums with the repository’s allowed Conventional Commit matrix.
The configured scope-enum and type-enum currently permit values outside the approved project policy, so commit validation won’t enforce the intended standard.
Suggested patch
'scope-enum': [
2,
'always',
- ['pipeline', 'web', 'db', 'channels', 'types', 'remotion', 'ci', 'deps', 'repo'],
+ ['pipeline', 'web', 'db', 'channels', 'remotion', 'ci', 'deps'],
],
'type-enum': [
2,
'always',
- ['feat', 'fix', 'chore', 'docs', 'refactor', 'test', 'perf', 'style', 'build', 'revert'],
+ ['feat', 'fix', 'chore', 'docs', 'refactor', 'test'],
],As per coding guidelines, commitlint.config.{js,cjs} must enforce only feat|fix|chore|docs|refactor|test with scopes pipeline|web|db|channels|remotion|ci|deps.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'scope-enum': [ | |
| 2, | |
| 'always', | |
| ['pipeline', 'web', 'db', 'channels', 'types', 'remotion', 'ci', 'deps', 'repo'], | |
| ], | |
| 'type-enum': [ | |
| 2, | |
| 'always', | |
| ['feat', 'fix', 'chore', 'docs', 'refactor', 'test', 'perf', 'style', 'build', 'revert'], | |
| ], | |
| 'scope-enum': [ | |
| 2, | |
| 'always', | |
| ['pipeline', 'web', 'db', 'channels', 'remotion', 'ci', 'deps'], | |
| ], | |
| 'type-enum': [ | |
| 2, | |
| 'always', | |
| ['feat', 'fix', 'chore', 'docs', 'refactor', 'test'], | |
| ], |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@commitlint.config.js` around lines 7 - 16, The commitlint configuration
currently allows extra types and scopes; update the 'type-enum' and 'scope-enum'
arrays in commitlint.config.js so they exactly match the repository policy: set
'type-enum' to only ['feat','fix','chore','docs','refactor','test'] and set
'scope-enum' to only ['pipeline','web','db','channels','remotion','ci','deps'];
keep the same validator structure (severity and 'always') but replace the enum
lists to enforce the approved Conventional Commit matrix.
Summary by CodeRabbit
Documentation
Chores