Wire Claude Code automation into the stack#3
Open
pppmppp wants to merge 9 commits into
Open
Conversation
Wires in @modelcontextprotocol/server-fetch so Claude Code can pull Express, Node.js test runner, and ESLint docs directly during sessions on this repo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Allows mcp__fetch__fetch explicitly rather than blanket-allowing the entire server, so only HTTP GET/fetch operations are permitted. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Encodes the route file structure, store function pattern, error-response
shape ({ error: "message" }, 400/404/201), server.js mount convention,
and test structure (node:test + supertest + store.reset per test).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Opening phrase 'Add a resource' maps to 'add-resource'; previous 'Adding a new REST resource' caused the model to guess 'add-new-rest-resource' and fail with Unknown skill. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Built-in skills require an explicit name: key so Claude Code registers the invocation name; without it the model synthesises a name from the description and misses. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Flat .claude/skills/*.md files are not registered as invocable skills; the correct format is .claude/skills/<name>/SKILL.md — same convention used by all built-in and plugin skills. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Checks a route file against the project's conventions: error-response shape, early-return pattern, Number(req.params.id), status codes, store-only data access, and test coverage with store.reset(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fires on Write|Edit, extracts the file path from the hook JSON, and runs eslint --fix on .js files only (case pattern match). Non-JS files are silently skipped; eslint errors are suppressed so the hook never blocks Claude. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add DELETE /users/:id route (204 on success, 404 if not found) - Add deleteUser() to store, delegating lookup to getUser() to avoid predicate duplication - Validate :id as an integer on all parameterised routes (GET, PUT, DELETE), returning 400 for non-integer input instead of a misleading 404 - Add NOTES.md summarising MCP, skill, command, hook, and headless run choices Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.mcp.json), scoped tomcp__fetch__fetchonly via.claude/settings.jsonadd-resourceproject skill in.claude/skills/add-resource/for scaffolding new REST resources/review-routecustom command in.claude/commands/that runs a convention checklist against any route filePostToolUsehook in.claude/settings.jsonthat auto-runseslint --fixafter every.jsfile editDELETE /users/:idimplementation headless viaclaude -pwith--allowedTools "Read,Edit,Bash(npm test)"NOTES.mdexplaining each automation choice:idroutes (400 for non-integer input),deleteUserdelegates togetUser, return type consistent withupdateUserTest plan
npm test).mcp.jsonand.claude/settings.jsonare committed and valid JSONskills/add-resource/SKILL.mdexists with name and description frontmatter.claude/commands/review-route.mdexists and contains$ARGUMENTSsettings.jsonmatchesWrite|EditonPostToolUseNOTES.mdpresent and answers all five questions🤖 Generated with Claude Code