feat: add Claude Code setup#3116
Conversation
- Add .claude/settings.json with Node-specific permissions - Add .claude/agents/stack-maintainer.md agent - Add skills: verify, create-module, feature, naming, update-stack - Rewrite README to align with Vue stack (pierreb-devkit branding, same structure)
There was a problem hiding this comment.
Pull request overview
Adds Claude Code configuration and project “skills” to streamline common workflows (verify, create module, implement feature, naming, update stack), and refreshes the README to reflect the intended Devkit stack structure and usage.
Changes:
- Add
.claude/settings.jsonwith file and shell-command permissions for Claude Code. - Add a “stack-maintainer” agent plus 5 Claude Code skills under
.claude/skills/. - Rewrite
README.md(badges/branding, stack usage docs, Claude Code setup section).
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates badges/branding and rewrites usage docs; adds Claude Code setup and stack merge guidance. |
| .claude/settings.json | Defines Claude Code file access rules and an allow/deny list for bash commands. |
| .claude/agents/stack-maintainer.md | Adds an agent rubric focused on mergeability/security sanity checks. |
| .claude/skills/verify/SKILL.md | Adds a verification workflow skill (lint + tests). |
| .claude/skills/update-stack/SKILL.md | Adds a documented git-based workflow for merging upstream stack updates. |
| .claude/skills/naming/SKILL.md | Documents naming conventions for modules/files. |
| .claude/skills/feature/SKILL.md | Documents how to implement features within the stack’s layered architecture. |
| .claude/skills/create-module/SKILL.md | Documents how to scaffold a new module from the tasks template. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- README: fix ESLint ecmaVersion (latest), npm start description (no auto-reload), lint section (test:lint vs lint), docker image (pierreb/node) - skill/verify: use npm run test:lint instead of npm run lint - skill/naming: fix model patterns (model.mongoose.js, schema.js), optional name segment - skill/create-module: align module structure with actual tasks template (controller.js, data.service.js, model.mongoose.js, schema.js, unit+integration tests) - skill/feature: fix responses helper signature (responses.success(res, msg)(data))
- lint = check (read-only), lint:fix = auto-fix (was inverted) - Update README, skills and settings.json accordingly
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- README: fix Docker DB name (WaosNodeDev, matches default config) - create-module: routes are auto-discovered via glob, no manual registration - update-stack: add uploads module to conflict strategy table - settings.json: lint:fix already added in previous commit
WAOS_ prefix is kept for compatibility (legacy acronym for weareopensource). Add parenthetical note in README, skills and agent — aligned with Vue stack treatment.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- config/index.js: WAOS_NODE_* -> NODE_*, slice(2) -> slice(1), exclude NODE_ENV - config/defaults: titles, DB name (WaosNodeDev -> NodeDev), placeholder keys, repo owners (weareopensource -> pierreb-devkit), contact email - docker-compose.yml: container/image/volume names, env vars, DB name - lib/services/express.js: WAOS Node Api -> Devkit Node Api - package.json: name, author, repo URL, process name, repositoryUrl - modules/tasks/tests: waos* test ID -> node* - README.md: all NODE_ env vars, no more legacy note - .claude/: clean NODE_ refs - WIKI.md, config/markdown/legal.md: links updated - .github/FUNDING.yml: github: pierreb-devkit - .github/workflows/dependabot.yml: secrets.WAOS -> secrets.NODE_TOKEN
gulp-cli uses require() to load gulpfile.js which has an ESM top-level await (config/index.js), causing ERR_REQUIRE_ASYNC_MODULE on Node 22+. - Replace gulp test/testWatch/testCoverage with direct jest calls - Add scripts/jest.globalSetup.js to drop test DB before suite runs (replaces the gulp dropDB task) - Enable globalSetup in jest.config.js
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 21 out of 22 changed files in this pull request and generated 6 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Remove config.db.options from mongoose.connect (empty user/pass caused auth error) - Wrap in try/catch: drop is best-effort, CI starts fresh anyway - Fix test.js DB name WaosNodeTest -> NodeTest
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 23 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Integration tests each call bootstrap() (MongoDB + Express) in beforeAll. Running in parallel on CI hardware causes 5s hook timeouts. - Add --runInBand to all test scripts (matches previous gulp sequential behavior) - Increase testTimeout to 15000ms for slower CI environments
NODE_ prefix collides with Node.js system env vars (NODE_OPTIONS, NODE_PATH, NODE_AUTH_TOKEN...) which get picked up by the config parser and corrupt the app config, causing ECONNREFUSED in CI. DEVKIT_NODE_ is specific enough to avoid collisions while matching the Devkit branding.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 23 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The old version uses Docker client API 1.40 which is incompatible with the Docker daemon on current GitHub runners (minimum API version 1.44). This caused MongoDB to never start, resulting in ECONNREFUSED on all integration tests.
- Fix prod script typo (extra 'node start' → 'node') - Remove extra spaces before punctuation in README, agent, feature skill - Fix broken markdown links in WIKI.md (remove incomplete URLs)
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 23 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 23 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 26 out of 28 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
.claude/settings.jsonwith Node-specific allowed/denied commands and file permissions.claude/agents/stack-maintainer.mdfor mergeability and security reviews/verify,/create-module,/feature,/naming,/update-stackTest plan
.claude/config loads in Claude Code without setup/verifyskill → lint + tests pass/create-moduleskill → new module scaffolded correctly