full-stack-toolkit
Suite complète d'outils pour le développement full-stack moderne. Combine skills de déploiement, agents d'architecture, hooks CI/CD, serveurs MCP Git et LSP.
Description & Examples
full-stack-toolkit
A comprehensive suite of tools for modern full-stack development. Combines deployment skills, project scaffolding, an architecture agent, CI/CD hooks, Git MCP access, and ESLint LSP support in a single installable plugin.
What it does
This plugin bundles everything a full-stack team needs day-to-day: the deploy and scaffold skills streamline release workflows and project bootstrapping; the /build and /test commands provide one-shot pipeline triggers; the architect-agent helps design system boundaries and review technical decisions; pre-push and post-deploy hooks enforce quality gates; git-mcp exposes repository history and diff data to Claude; and eslint-lsp keeps JavaScript and TypeScript code clean in real time.
When to use it
Install this plugin when starting a new full-stack project or when a team wants a single plugin that covers the complete development lifecycle without assembling individual plugins. It is particularly suited to teams working with Node.js backends and React or Vue frontends deployed to cloud environments.
Components
bolt
deploy
Skill
deploy
Orchestrates the full deployment pipeline for a full-stack application. Builds artefacts, runs pre-deployment checks, pushes to the target environment, and reports the outcome.
Usage
"Deploy the current branch to staging"
"Deploy version 2.4.1 to production with a canary rollout"
"Deploy only the backend service to staging"
Deployment targets
The skill reads target definitions from deploy.config.json at the project root:
{
"targets": {
"staging": {
"provider": "aws",
"region": "eu-west-1",
"cluster": "staging-ecs",
"services": ["api", "worker", "frontend"]
},
"production": {
"provider": "aws",
"region": "eu-west-1",
"cluster": "prod-ecs",
"services": ["api", "worker", "frontend"],
"strategy": "canary",
"canaryWeight": 10
}
}
}
Deployment steps
- Run
npm run build(or the configured build command) - Execute the test suite and abort on failure
- Build and push Docker images tagged with the commit SHA
- Update the target service definition
- Wait for the health check to pass
- Print the deployment URL and service versions
Rollback
If the health check fails after deployment, the skill automatically rolls back to the previous task definition and reports the failure:
Deployment failed — health check timeout after 120s
Rolled back api service to revision 47
Supported providers
- AWS ECS / Fargate
- Google Cloud Run
- Heroku
- Fly.io
- Custom (via deploy script hook)
bolt
scaffold
Skill
scaffold
Generates project structure, boilerplate files, and configuration for new features or entire new services following the team's conventions.
Usage
"Scaffold a new REST endpoint for user notifications"
"Create a new React feature module for the checkout flow"
"Scaffold a new microservice for email delivery"
"Add a new database entity for subscription plans"
What can be scaffolded
Backend (Node.js / TypeScript)
- REST endpoint: controller, service, repository, DTO, tests
- GraphQL resolver with schema type, resolver, and data source
- Background job / queue consumer
- New microservice with Dockerfile, CI config, and health endpoint
Frontend (React / Vue)
- Feature module: component, hook, context, styles, and test
- Page with route registration
- Form with validation schema
- Data-fetching hook with error boundary
Shared
- Database migration file with up/down functions
- OpenAPI schema entry
- Environment variable declarations in
.env.example
Conventions applied
- File and folder naming follows the project's existing pattern (detected automatically)
- Imports use the project's configured path aliases
- Test files are placed alongside source files or in the
__tests__directory, whichever the project uses - Generated code passes the project's linter and formatter without modification
Example output
Scaffolding REST endpoint: GET /api/notifications
Created:
src/api/notifications/notifications.controller.ts
src/api/notifications/notifications.service.ts
src/api/notifications/notifications.repository.ts
src/api/notifications/dto/notification.dto.ts
src/api/notifications/__tests__/notifications.controller.spec.ts
db/migrations/20240315_create_notifications_table.ts
terminal
/build
Command
/build
Triggers the full build pipeline for the project, including compilation, asset bundling, and Docker image creation. Reports build output and any errors.
Usage
/build
/build staging
/build production --no-cache
Arguments
| Argument | Description |
|---|---|
[target] |
Build profile to use: development (default), staging, or production |
--no-cache |
Disable Docker layer cache for a clean build |
--service <name> |
Build only a specific service instead of all services |
Build steps
- Install or verify dependencies (
npm ci) - Run TypeScript compilation (
tsc --noEmitfor type checking) - Bundle frontend assets (
npm run build:client) - Compile backend (
npm run build:server) - Build Docker images for each service
- Run smoke tests against built artefacts
Output
[build] Installing dependencies... done (2.1s)
[build] Type checking... done (4.3s)
[build] Bundling frontend... done (12.7s)
[build] Compiling backend... done (3.1s)
[build] Building Docker images...
api:abc1234 done
worker:abc1234 done
[build] Build successful in 24.8s
Failure handling
On failure, the command prints the error output from the failing step and exits. The --verbose flag streams all output in real time rather than buffering it.
terminal
/test
Command
/test
Runs the project test suite with coverage reporting. Supports filtering by file pattern, test name, or suite type.
Usage
/test
/test unit
/test integration
/test src/api/users/
/test --watch
Arguments
| Argument | Description |
|---|---|
[suite] |
Test suite to run: unit, integration, e2e, or omit to run all |
[path] |
Narrow tests to a specific file or directory |
--watch |
Re-run affected tests on file change |
--coverage |
Generate a coverage report (default: true for CI) |
--bail |
Stop after the first failure |
Test suites
| Suite | Runner | Description |
|---|---|---|
unit |
Vitest / Jest | Fast isolated tests, no I/O |
integration |
Vitest / Jest | Tests with real DB and services via Testcontainers |
e2e |
Playwright | Browser-level end-to-end tests |
Output
[test] Running unit tests...
✓ UserService > creates a user (12ms)
✓ UserService > rejects duplicate email (8ms)
✓ NotificationService > sends welcome email (5ms)
...
47 passed, 0 failed (1.4s)
[test] Coverage: 84.2% statements, 79.6% branches
[test] Coverage report written to coverage/
Notes
- Integration tests require Docker to be running (Testcontainers spins up databases automatically)
- E2E tests require the application to be running; start it first with
/buildandnpm start
smart_toy
architect-agent
Agent
architect-agent
An autonomous agent that helps design system architecture, review technical decisions, and evaluate trade-offs for full-stack applications. Acts as a technical sounding board grounded in the existing codebase.
Capabilities
- Analyses the existing codebase to understand current architecture and constraints
- Proposes system designs for new features with component diagrams in Mermaid
- Reviews architectural decisions for scalability, maintainability, and security implications
- Identifies coupling, circular dependencies, and layering violations
- Recommends patterns (CQRS, event sourcing, saga, BFF, etc.) when appropriate
- Evaluates database schema designs and query access patterns
- Reviews API contract designs (REST, GraphQL, gRPC) for consistency and evolvability
Usage
"Design the architecture for a real-time notification system"
"Review the current service boundaries — are they well-defined?"
"We need to add multi-tenancy. What are the options and trade-offs?"
"Is our current database schema going to scale to 10M users?"
"Should we split the monolith? What would the service boundaries be?"
Output style
The agent communicates as a senior engineer: it asks clarifying questions when requirements are ambiguous, presents options with explicit trade-offs, and recommends a path while explaining why. It avoids over-engineering and explicitly calls out when a simpler approach is sufficient.
Example response structure:
## Notification system — architecture options
### Option A: in-process event bus
Pros: simple, no new infrastructure
Cons: does not survive process restarts, no fan-out
### Option B: message queue (Redis Streams / SQS)
Pros: durable, scalable fan-out, retry support
Cons: operational overhead, eventual consistency
### Recommendation
Given your current scale (<100k users) and team size (5 engineers),
Option B with Redis Streams is the right call. It avoids the fragility
of Option A without the complexity of a full message broker.
Context used
The agent reads the repository structure, existing service definitions, database migrations, and API contracts before responding to ensure recommendations are grounded in the real codebase rather than generic advice.
anchor
pre-push
Hook
pre-push hook
Runs a final quality gate before commits are pushed to the remote repository. Ensures that nothing broken is shared with the rest of the team.
Checks performed
- Full test suite — runs unit and integration tests (not E2E, which are too slow for a push hook)
- Build verification — confirms the project compiles without errors
- Security scan — quick scan for hardcoded secrets in the commits being pushed
- Branch policy — prevents direct pushes to
mainormaster; requires a pull request
Behaviour
The hook receives the list of commits being pushed. It only runs checks relevant to the diff (e.g., if no source files changed, the build step is skipped). This keeps the hook fast for documentation-only pushes.
[pre-push] Checking 3 commits for push to origin/feature/checkout-flow
[pre-push] Running tests... 47 passed (1.4s)
[pre-push] Build verification... ok (3.1s)
[pre-push] Secret scan... clean
[pre-push] All checks passed. Pushing.
Branch protection
pre-push:
protected-branches:
- main
- master
- release/*
allow-force-push: false
Attempting to push directly to a protected branch produces:
[pre-push] Direct push to 'main' is not allowed.
[pre-push] Open a pull request instead: https://github.com/org/repo/compare/your-branch
Configuration
pre-push:
tests: unit # "unit" | "all" | false
build: true
secret-scan: true
protected-branches: [main, master]
skip-for-tags: true # tags bypass this hook
Bypassing
git push --no-verify
Force-push attempts to protected branches are blocked even with --no-verify if the remote has branch protection rules enabled.
anchor
post-deploy
Hook
post-deploy hook
Runs automatically after a successful deployment. Performs smoke testing, cache warming, and notifications so the team knows the deployment succeeded and the service is healthy.
Actions performed
- Smoke tests — sends a set of HTTP requests to key endpoints and verifies expected responses
- Cache warming — pre-fetches high-traffic pages or primes application-level caches
- Database migration check — verifies that pending migrations were applied successfully
- Notification — posts a deployment summary to the configured Slack channel or webhook
- Monitoring alert suspension — pauses deployment noise alerts in PagerDuty / Grafana for 5 minutes
Smoke test configuration
Define smoke tests in deploy/smoke-tests.json:
[
{ "path": "/health", "expect": { "status": 200, "body": { "status": "ok" } } },
{ "path": "/api/version", "expect": { "status": 200 } },
{ "path": "/api/products", "expect": { "status": 200, "maxMs": 500 } }
]
Notification format
Deployed api@abc1234 to production
3/3 smoke tests passed
Response time p95: 142ms
Deployed by: mathieu.durand
Duration: 3m 12s
Configuration
post-deploy:
smoke-tests: deploy/smoke-tests.json
warm-cache: true
notify:
slack:
webhook: ${SLACK_DEPLOY_WEBHOOK}
channel: "#deployments"
monitoring:
suppress-alerts: 5m
provider: grafana
Failure handling
If smoke tests fail, the hook:
- Triggers automatic rollback via the
deployskill - Posts a failure notification with the failing test details
- Re-enables monitoring alerts immediately
Notes
- The hook runs in the context of the deployment pipeline, not on the developer's machine
- Environment-specific configuration is selected based on the
DEPLOY_ENVvariable set by thedeployskill
dns
git-mcp
MCP
git-mcp
MCP server that exposes Git repository data to Claude. Provides access to commit history, diffs, branches, tags, and blame information without requiring shell command execution.
Capabilities
| Tool | Description |
|---|---|
git_log |
List commits with author, date, and message; supports range and path filters |
git_diff |
Show diff between two refs, or between working tree and HEAD |
git_show |
Show the full content and diff of a specific commit |
git_blame |
Line-by-line attribution for a file |
git_branches |
List local and remote branches with their HEAD commits |
git_tags |
List tags with their associated commits and messages |
git_status |
Show working tree status (staged, unstaged, untracked) |
git_stash_list |
List stashed changesets |
Usage examples
"Show me the last 10 commits that touched src/api/users/"
"What changed between v2.3.0 and v2.4.0?"
"Who last modified the payment service and when?"
"What commits are on this branch that aren't on main yet?"
"Show me the full diff for commit abc1234"
Configuration
The server operates on the current workspace root by default. For monorepos with multiple Git repositories, specify the target:
{
"git-mcp": {
"workspaceRoot": "${workspaceFolder}",
"maxLogEntries": 500,
"diffContextLines": 5
}
}
Notes
- Read-only: no write operations (commit, push, reset) are exposed
- Binary file diffs are summarised as "binary file changed" rather than shown inline
- Commit messages and diffs are truncated at 50KB per entry to avoid context overflow
code
eslint-lsp
LSP
eslint-lsp
LSP server that surfaces ESLint diagnostics and auto-fix actions for JavaScript and TypeScript files within the full-stack-toolkit workflow.
Installation prerequisite
ESLint must be available either locally in the project or globally:
npm install --save-dev eslint
# or globally:
npm install -g eslint
Capabilities provided
| Capability | Description |
|---|---|
| Diagnostics | Rule violations with error/warning severity |
| Code actions | One-click auto-fix for fixable rules |
| Format on save | Apply --fix automatically when a file is saved |
Integration with the toolkit
Within full-stack-toolkit, eslint-lsp is complementary to typescript-language-server (from the lsp-tools plugin if installed). ESLint handles style and quality rules; TypeScript handles type correctness. Both diagnostic streams are merged and presented together.
The /build command respects ESLint: the build step runs eslint src/ --max-warnings 0 and fails if any warnings are present in production build mode.
Configuration
The server reads the project's ESLint configuration automatically. A recommended baseline for full-stack TypeScript projects:
// eslint.config.js
import js from "@eslint/js";
import tseslint from "typescript-eslint";
export default tseslint.config(
js.configs.recommended,
...tseslint.configs.recommended,
{
rules: {
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
"no-console": "warn"
}
}
);
Plugin settings
{
"eslint-lsp": {
"run": "onSave",
"fixOnSave": false,
"validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
}
}
Notes
run: "onType"provides the fastest feedback but increases CPU usage on large files- Type-aware lint rules require
parserOptions.projectpointing to yourtsconfig.json