ModCodePatternIntelligent code consistency — zero oversight, any language, any framework.
One JSON file. Infinite automation. Why ModCodePattern?
Works with every language — JavaScript, TypeScript, Python, Java, Rust, Go, C#, PHP, Ruby, and more. Get Started in 30 Seconds1. Install ModCodePattern from the VS Code Marketplace 2. Create a
3. Create a new component file — a Todo task appears instantly!
File System Monitoring
Four notification typesFile — Remind to update a specific file:
Folder — Remind to work in a directory:
Commands — Remind to run scripts:
URL (External Links) — Open a link in the browser:
Use Pattern Identification
The
Pattern IDs appear in the Health Check output, workspace statistics, and the Todo list — making it easy to trace which rule generated which task. Content Filtering
Instead of reacting to every save on a file, use
This prevents noise — you only get reminders when it actually matters. Execution Requirements (
|
| Condition | Type | Description | Example |
|---|---|---|---|
fileExists |
string | string[] |
File(s) must exist | "tsconfig.json" |
folderExists |
string | string[] |
Folder(s) must exist | "src/components" |
variableNotEmpty |
string | string[] |
Variable(s) must be defined and non-empty | "{{API_KEY}}" |
patternCompleted |
string | string[] |
Pattern(s) must have been completed (all tasks checked off) | "setup-step-1" |
patternActive |
string | string[] |
Pattern(s) must be enabled (enabled !== false) |
"api-workflow" |
allOf |
boolean |
Combine conditions with AND (true, default) or OR (false) | true |
Real-world examples
Ensure project setup before running tests:
{
"onManual": "runTests",
"manualTitle": "🧪 Run Full Test Suite",
"requires": {
"fileExists": ["package.json", ".env.test"],
"folderExists": "tests"
},
"notify": [
{ "commands": ["npm test"], "description": "🚀 Run tests" }
]
}
Sequential onboarding workflow:
{
"patterns": [
{
"id": "setup-dependencies",
"onStart": true,
"notify": [
{ "commands": ["npm install"], "description": "📦 Install dependencies" }
],
"description": "Step 1: Install dependencies"
},
{
"id": "configure-environment",
"onManual": "configureEnv",
"requires": {
"patternCompleted": "setup-dependencies"
},
"notify": [
{ "file": ".env", "description": "⚙️ Configure environment variables" }
],
"description": "Step 2: Configure environment (requires Step 1 completion)"
},
{
"onManual": "startDev",
"requires": {
"patternCompleted": ["setup-dependencies", "configure-environment"],
"fileExists": ".env"
},
"notify": [
{ "commands": ["npm run dev"], "description": "🚀 Start dev server" }
],
"description": "Step 3: Start development (requires Steps 1 & 2)"
}
]
}
Conditional API pattern:
{
"onChange": "src/api/**/*.ts",
"requires": {
"fileExists": "src/types/api.d.ts",
"variableNotEmpty": "{{API_DIR}}"
},
"notify": [
{ "file": "src/types/api.d.ts", "description": "📘 Update API types" }
],
"description": "🔧 API modified (only if types file exists)"
}
OR logic — at least one condition must pass:
{
"onCreateFile": "src/**/*.test.ts",
"requires": {
"fileExists": ["jest.config.js", "vitest.config.ts"],
"allOf": false
},
"notify": [
{ "commands": ["npm test"], "description": "🧪 Run new test" }
],
"description": "Test file created (requires Jest OR Vitest)"
}
Pattern completion tracking
When you check off all tasks in a pattern's Todo item, ModCodePattern marks that pattern as "completed" in the workspace state. Other patterns can then reference it via patternCompleted:
{
"id": "step-1",
"onStart": true,
"notify": [{ "file": "README.md", "description": "📚 Read the docs" }],
"description": "Step 1"
}
{
"id": "step-2",
"onManual": "continueSetup",
"requires": {
"patternCompleted": "step-1"
},
"notify": [{ "commands": ["npm install"], "description": "📦 Install" }],
"description": "Step 2 (blocked until Step 1 is completed)"
}
- Completion state is stored per workspace (not shared across projects)
- Entries expire after 60 days to prevent storage bloat
- Orphaned patterns (deleted from config) are automatically pruned
- Maximum 350 completed patterns per workspace (hard cap for safety)
Inline Hints
See pattern reminders directly inside your source code.
When a pattern triggers, ModCodePattern can display inline hints as decorations right in the affected files — no need to open the Todo list to know what to do:
// Your code
export const Button = () => {
return <button>Click me</button>;
};
// 📝 🔄 API modified — synchronize types ← inline hint
Configure per pattern
Use showInlineHint to control which patterns show hints:
{
"patterns": [
{
"onChange": "src/api/**/*.ts",
"notify": [
{ "file": "src/types/api.ts", "description": "📝 Update API types" }
],
"showInlineHint": true,
"description": "🔧 API modified"
},
{
"onChange": ".env",
"notify": [
{ "file": "docker-compose.yml", "description": "🐳 Update Docker config" }
],
"showInlineHint": false,
"description": "⚙️ Env changed (silent)"
}
]
}
showInlineHint: true— (default) hints appear in the triggering file and target filesshowInlineHint: false— pattern works normally but no visual decoration in the editor
Best for: synchronization reminders, guidance for new developers, contextual notes. Disable for: high-frequency patterns that would clutter the editor.
onStart — Onboarding & Educational Trigger
Show a checklist the moment a developer opens the project.
The onStart trigger fires when the extension activates (project open) or manually via Ctrl+Shift+P → "ModCodePattern: Start". Perfect for onboarding and educational workflows:
{
"onStart": true,
"notify": [
{ "file": "README.md", "description": "📚 Read the project guide" },
{ "file": "docs/ARCHITECTURE.md", "description": "🏗️ Understand the architecture" },
{ "file": "docs/CODING_STANDARDS.md", "description": "📏 Review coding standards" },
{ "url": "https://company.slack.com/channels/dev-team", "description": "💬 Join the team channel" },
{ "commands": ["npm install", "npm run dev"], "description": "🚀 Setup & run" }
],
"description": "👋 Welcome! Follow these steps to get started"
}
New team members open the project → the Todo list instantly shows them exactly what to do, in order. No more 20-page onboarding docs.
Chained Patterns vs Linked Tasks
ModCodePattern offers two ways to create multi-step workflows. Understanding the difference is key:
Chained Patterns — Implicit workflow
Chained patterns work implicitly: the output of Pattern A naturally matches the trigger of Pattern B. No special property needed — just smart glob alignment:
{
"patterns": [
{
"onCreateFile": "{{COMPONENTS_DIR}}/**/*.tsx",
"notify": [
{ "file": "src/stories/{{TRIGGER_NAME}}.stories.tsx", "description": "📖 Create Storybook story" }
],
"description": "Step 1 — Component created"
},
{
"onCreateFile": "src/stories/**/*.stories.tsx",
"notify": [
{ "folder": "{{TESTS_DIR}}/stories/", "description": "🧪 Create story tests" }
],
"description": "Step 2 — Story created"
},
{
"onCreateFile": "{{TESTS_DIR}}/stories/**/*.test.tsx",
"notify": [
{ "commands": ["npm run test:stories"], "description": "🚀 Run story tests" }
],
"description": "Step 3 — Tests created"
}
]
}
How it flows: You create Button.tsx → notified to create Button.stories.tsx → you create it → notified to create tests → you create them → notified to run tests.
Each pattern triggers independently because the file you create matches the next pattern's glob. It's natural and requires no linking — but you must create each file yourself to advance the chain.
Linked Tasks (triggerNext) — Explicit workflow
Linked tasks use the triggerNext property to explicitly connect patterns by their id. When all tasks of Pattern A are completed (checked off in the Todo list), Pattern B fires automatically:
{
"patterns": [
{
"id": "step-1-setup",
"onCreateFile": "{{COMPONENTS_DIR}}/**/*.tsx",
"notify": [
{ "file": "{{COMPONENTS_DIR}}/index.ts", "description": "📦 Export the component" },
{ "file": "src/types/{{TRIGGER_NAME}}.types.ts", "description": "📘 Create type definitions" }
],
"triggerNext": "step-2-testing",
"description": "Step 1 — Setup component"
},
{
"id": "step-2-testing",
"onStart": true,
"notify": [
{ "file": "{{TESTS_DIR}}/{{TRIGGER_NAME}}.test.tsx", "description": "🧪 Write unit tests" },
{ "commands": ["npm test"], "description": "🚀 Run test suite" }
],
"triggerNext": "step-3-docs",
"description": "Step 2 — Test the component"
},
{
"id": "step-3-docs",
"onStart": true,
"notify": [
{ "file": "docs/components/{{TRIGGER_NAME}}.md", "description": "📝 Write documentation" },
{ "url": "https://storybook.myapp.com", "description": "📖 Verify in Storybook" }
],
"description": "Step 3 — Document the component"
}
]
}
How it flows: You create a component → Step 1 tasks appear → you complete them all ✅ → Step 2 tasks appear automatically → you complete them ✅ → Step 3 tasks appear automatically.
When to use which?
| Chained Patterns | Linked Tasks (triggerNext) |
|
|---|---|---|
| Mechanism | Implicit (glob matching) | Explicit (by pattern id) |
| Advances when... | You create/modify a file that matches the next trigger | You check off all tasks in the Todo list |
Requires id |
No | Yes |
| Best for | File-creation pipelines | Multi-step checklists, onboarding, reviews |
| Complexity | Simple, natural | More control, more guided |
You can combine both approaches in the same project for maximum flexibility.
Adaptive Variables — Auto-detects Your Architecture
No hard-coded paths. Your patterns work across any project structure.
{
"onCreateFile": "{{COMPONENTS_DIR}}/**/*.tsx",
"notify": ["{{COMPONENTS_DIR}}/index.ts"],
"description": "📦 Export {{TRIGGER_NAME}} component"
}
Whether your components live in src/components/, app/ui/, or lib/widgets/ — the pattern just works.
Architecture variables (auto-detected)
| Variable | Resolves to... | Examples |
|---|---|---|
{{SRC_DIR}} |
Main source directory | src, lib, app |
{{COMPONENTS_DIR}} |
Components directory | src/components, app/ui |
{{HOOKS_DIR}} |
Hooks / composables | src/hooks, src/composables |
{{API_DIR}} |
API / services | src/api, src/services |
{{TESTS_DIR}} |
Tests directory | tests, __tests__, spec |
{{DOCS_DIR}} |
Documentation | docs, documentation |
{{CONFIG_DIR}} |
Config directory | config, configs |
{{CONFIG_FILE}} |
Config file | config/index.ts |
{{TYPES_FILE}} |
Types file | src/types/index.ts |
Variable status: Run Ctrl+Shift+P → "ModCodePattern: Show Adaptive Variables" to see which variables are ✅ Found (directory exists in your project) vs ❌ Not Assigned (suggested but not yet created). Only found variables resolve in your patterns — create the missing directories to activate them automatically.
Runtime variables
| Variable | Description | Example |
|---|---|---|
{{TRIGGER_PATH}} |
Full path of the triggering file | src/components/Button.tsx |
{{TRIGGER_FILE}} |
File name with extension | Button.tsx |
{{TRIGGER_NAME}} |
File name without extension | Button |
{{TRIGGER_DIR}} |
Directory of the triggering file | src/components |
{{TRIGGER_TYPE}} |
Event type that fired | onCreateFile |
Tip: Use
{{TRIGGER_NAME}}(not{{TRIGGER_FILE}}) when building file paths to avoid double extensions likeButton.tsx.test.tsx.
Custom variables
Define your own reusable values:
{
"variables": {
"COMPANY": "Acme",
"API_VERSION": "v2",
"DESIGN_SYSTEM": "lib/design"
},
"patterns": [
{
"onChange": "{{DESIGN_SYSTEM}}/**/*.tsx",
"notify": [
{ "file": "docs/{{COMPANY}}/api-{{API_VERSION}}.md", "description": "📝 Update docs" }
]
}
]
}
Custom variables can override auto-detected ones if your project uses a non-standard structure:
{
"variables": {
"COMPONENTS_DIR": "lib/ui",
"TESTS_DIR": "spec"
}
}
Variable Transformations
Transform any variable on the fly with pipe filters — 17 built-in transformations.
Apply transformations directly inside {{ }} using the pipe | syntax:
{
"onCreateFile": "{{COMPONENTS_DIR}}/**/*.tsx",
"notify": [
{
"file": "tests/{{TRIGGER_NAME | kebabCase}}.test.tsx",
"description": "🧪 Test for {{TRIGGER_NAME | pascalCase}}"
}
]
}
If you create MyButton.tsx:
{{TRIGGER_NAME | kebabCase}}→my-button{{TRIGGER_NAME | pascalCase}}→MyButton
All 17 transformations
| Transform | Description | Example |
|---|---|---|
uppercase |
ALL CAPS | MyButton → MYBUTTON |
lowercase |
all lowercase | MyButton → mybutton |
capitalize |
First letter capitalized | hello → Hello |
camelCase |
camelCase | my-button → myButton |
pascalCase |
PascalCase | my-button → MyButton |
kebabCase |
kebab-case | MyButton → my-button |
snakeCase |
snake_case | MyButton → my_button |
constantCase |
CONSTANT_CASE | MyButton → MY_BUTTON |
slugify |
URL-safe slug | Mon Composant → mon-composant |
reverse |
Reverse string | Button → nottuB |
basename |
File name from path | /src/components/Button.tsx → Button.tsx |
dirname |
Parent directory | /src/components/Button.tsx → /src/components |
ext |
File extension | Button.tsx → .tsx |
length |
Character count | Button → 6 |
first:n |
First n characters | {{NAME \| first:3}} → But |
last:n |
Last n characters | {{NAME \| last:3}} → ton |
replace:old:new |
Replace text | {{NAME \| replace:-:_}} → my_button |
Chain multiple transformations
{
"file": "logs/{{TRIGGER_NAME | lowercase | replace:_:-}}.log",
"description": "📊 Log for {{TRIGGER_NAME | uppercase | first:10}}"
}
Scheduled Reminders
Never miss a standup, a deadline, or an end-of-day commit again.
{
"onSchedule": {
"time": "09:00",
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"]
},
"notify": [
{
"url": "https://meet.google.com/your-standup",
"description": "🕘 Daily standup — {{DAY_NAME_FR}} {{DATE_FORMATTED}}"
}
]
}
{
"onSchedule": {
"time": "17:00",
"days": "daily"
},
"notify": [
{
"commands": ["git status"],
"description": "🕐 End-of-day commit check — {{WORKSPACE_NAME}}"
}
]
}
Schedule options
| Property | Type | Description | Example |
|---|---|---|---|
time |
string | Time in HH:MM (required) | "14:30" |
days |
string/array | Repeat days | "daily", ["monday", "friday"] |
date |
string | One-time date (YYYY-MM-DD) | "2025-12-31" |
timezone |
string | Timezone | "Europe/Paris" |
repeat |
boolean | Repeat (default: true) | false |
Temporal variables
| Variable | Description | Example |
|---|---|---|
{{SCHEDULED_TIME}} |
Planned trigger time | "14:30" |
{{ACTUAL_TIME}} |
Real trigger time | "14:31" |
{{CURRENT_DATE}} |
Today's date | "2025-01-15" |
{{DAY_OF_WEEK}} |
Day in English | "monday" |
{{DAY_NAME_FR}} |
Day in French | "lundi" |
{{DATE_FORMATTED}} |
Formatted date (French) | "15 janvier 2025" |
{{TIME_12H}} |
12-hour format | "2:30 PM" |
{{TIMESTAMP}} |
Unix timestamp | "1702651800000" |
{{TIMEZONE}} |
Timezone | "Europe/Paris" |
{{WORKSPACE_NAME}} |
Current workspace name | "my-project" |
{{ACTIVE_FILE}} |
Currently open file path | "/path/to/file.ts" |
{{ACTIVE_FILE_NAME}} |
Currently open file name | "file.ts" |
{{PATTERN_ID}} |
Pattern identifier | "daily-standup" |
{{IS_REPEATING}} |
Whether recurring | "true" |
{{TIME_DRIFT}} |
Drift in seconds | "45" |
Free: 5 scheduled reminders | Premium: Unlimited
Manual Commands
Create custom "magic buttons" in the Command Palette for your most complex workflows.
Open Ctrl+Shift+P → "ModCodePattern: Run Pattern" and pick any command you defined:
{
"onManual": "deployProduction",
"manualTitle": "🚀 Deploy to Production",
"description": "Full deployment checklist",
"notify": [
{ "commands": ["npm run build", "npm test"], "description": "🔧 Build & test" },
{ "file": "CHANGELOG.md", "description": "📋 Update changelog" },
{ "url": "https://dashboard.production.com", "description": "🌐 Open monitoring" }
]
}
More ideas:
| Command | Use case |
|---|---|
🛠️ Project Setup |
Install deps, configure env, init hooks |
📋 Quality Checklist |
Lint, test, build before merge |
🔧 Weekly Maintenance |
npm audit, clean branches, update deps |
👋 New Developer Onboarding |
Read docs, configure tools, join channels |
🧪 Full Test Suite |
Unit, integration, e2e tests + coverage report |
Free: 5 manual commands | Premium: Unlimited
Multilingual Descriptions
Write pattern descriptions in both English and French — ModCodePattern picks the right one based on VS Code language.
{
"onChange": "src/api/**/*.ts",
"notify": [
{
"file": "src/types/api.ts",
"description": {
"fr": "📘 Mettre à jour les types API",
"en": "📘 Update API types"
}
}
],
"description": {
"fr": "🔧 API modifiée",
"en": "🔧 API modified"
}
}
Your descriptions, notifications, and Todo items will appear in the user's language automatically.
Modular Configuration
Split your patterns across multiple files for large projects. Premium
{
"imports": [
".mod-patterns/react.json",
".mod-patterns/api.json",
".mod-patterns/testing.json"
],
"patterns": [
{
"onChange": "package.json",
"notify": ["README.md"],
"description": "📦 Dependencies changed"
}
]
}
Each imported file contains its own "patterns" array. Keep your config clean and organized by domain:
.mod-patterns/
├── react.json ← Component patterns
├── api.json ← API & service patterns
├── testing.json ← Test automation patterns
└── onboarding.json ← Developer onboarding
Git Event Automation 🔒 Premium
React to Git events in real time — branch switches, commits, pushes, and more.
Available Git triggers
| Trigger | Fires when... |
|---|---|
onBranchSwitch |
You switch branches |
onCommit |
A new commit is created |
onBranchCreate |
A new branch is created |
onBranchDelete |
A branch is deleted |
onPull |
You pull from remote |
onPush |
You push to remote |
Examples
Auto-deploy when switching to main:
{
"onBranchSwitch": { "to": "main" },
"notify": [
{
"commands": ["npm run build:production", "npm run deploy"],
"description": "🚀 Deploy {{PROJECT_NAME}} to production"
}
]
}
Update changelog on feature commits:
{
"onCommit": { "message": "feat:*" },
"notify": [
{ "file": "CHANGELOG.md", "description": "📝 Document: {{COMMIT_MESSAGE}}" }
]
}
Setup environment on new feature branches:
{
"onBranchCreate": { "name": "feature/*" },
"notify": [
{ "file": "docs/features/{{BRANCH_NAME}}.md", "description": "📝 Create feature doc" },
{ "commands": ["npm install"], "description": "📦 Install dependencies" }
]
}
Auto-install after pull:
{
"onPull": { "remote": "origin", "branch": "main" },
"notify": [
{ "commands": ["npm install"], "description": "📦 Install new dependencies" }
]
}
Git variables (13+)
| Variable | Description | Example |
|---|---|---|
{{BRANCH_NAME}} |
Current branch | feature/user-auth |
{{BRANCH_TYPE}} |
Detected type | feature, hotfix, main |
{{BRANCH_PREFIX}} |
Branch prefix | feature, release |
{{BRANCH_SUFFIX}} |
Branch suffix | user-auth, 123 |
{{BRANCH_PREVIOUS}} |
Previous branch | develop |
{{COMMIT_MESSAGE}} |
Commit message | feat: add login |
{{COMMIT_AUTHOR}} |
Commit author | Jane Doe |
{{REPOSITORY_NAME}} |
Repository name | my-app |
{{REPOSITORY_PATH}} |
Repository absolute path | /Users/dev/projects/app |
{{PROJECT_NAME}} |
Project name | @company/frontend |
{{REMOTE_NAME}} |
Remote name | origin |
{{BRANCH_CREATED}} |
Newly created branch | feature/new-feature |
{{BRANCH_DELETED}} |
Deleted branch | hotfix/bug-123 |
Built-in Smart Features
JSON Auto-completion & Validation
The built-in JSON Schema gives you real-time suggestions and error checking as you type in .mod-patterns.json. Press Ctrl+Space to explore all options — triggers, notification types, variables, and properties are all documented inline.
Interactive Todo List
All pattern notifications appear as checkable tasks in a dedicated VS Code panel. Open it anytime with Ctrl+Shift+P → "ModCodePattern: Open Todo List". Tasks include clickable file links, executable commands, and openable URLs.
Health Check
Run Ctrl+Shift+P → "ModCodePattern: Run Health Check" to detect:
- Overly broad patterns (
**/*.*) - Non-existent directories referenced in patterns
- Undefined or empty variables (adaptive, custom, runtime — each verified intelligently)
- Results shown in a dedicated Output Channel
Pattern Toggle
Pause all patterns instantly with Ctrl+Shift+Alt+P (status bar shows "⏸️ Paused"), or disable individual patterns with enabled:
{
"id": "heavy-pattern",
"onChange": "src/**/*.ts",
"enabled": false,
"notify": [{ "file": "src/index.ts", "description": "📦 Update exports" }],
"description": "Temporarily disabled"
}
- Global toggle does not affect manual commands
enabled: falsehides the pattern from manual command selection too
Silent Mode
Keep detections running in the background without popup notifications:
Settings → ModCodePattern → Silent Mode: true
The Todo list and status bar still work — you just won't be interrupted by popups.
Workspace Statistics
Run Ctrl+Shift+P → "ModCodePattern: Show Workspace Statistics" to see active patterns count, usage limits, workspace info, and variable status at a glance.
Smart Notification System
- 1st detection of a task → popup notification shown
- Repeated saves (Ctrl+S spam) → notifications silenced
- After task completion → popup re-enabled if triggered again
- The Todo list is the single source of truth — no duplicate popups
Real-World Examples
React project
{
"patterns": [
{
"id": "react-component",
"onCreateFile": "{{COMPONENTS_DIR}}/**/*.tsx",
"notify": [
{ "file": "{{COMPONENTS_DIR}}/index.ts", "description": "📦 Export {{TRIGGER_NAME}}" },
{ "file": "src/stories/{{TRIGGER_NAME}}.stories.tsx", "description": "📖 Create Storybook story" },
{ "folder": "{{TESTS_DIR}}/components/", "description": "🧪 Add unit tests" }
],
"showInlineHint": true,
"description": "New React component"
}
]
}
API + Documentation
{
"id": "api-sync",
"onChange": "src/api/**/*.ts",
"contentFilter": "export",
"notify": [
{ "file": "src/types/api.d.ts", "description": "📝 Update API types" },
{ "file": "docs/api/{{TRIGGER_NAME}}.md", "description": "📖 Update API docs" },
{ "file": "tests/api/{{TRIGGER_NAME}}.test.ts", "description": "🧪 Update tests" }
],
"description": "🔧 API endpoint modified"
}
Full onboarding workflow (Linked Tasks)
{
"patterns": [
{
"id": "onboarding-step-1",
"onStart": true,
"notify": [
{ "file": "README.md", "description": "📚 Read the project guide" },
{ "file": "docs/ARCHITECTURE.md", "description": "🏗️ Understand the architecture" }
],
"triggerNext": "onboarding-step-2",
"description": "👋 Step 1 — Read the docs"
},
{
"id": "onboarding-step-2",
"onStart": true,
"notify": [
{ "commands": ["npm install"], "description": "📦 Install dependencies" },
{ "commands": ["npm run dev"], "description": "🚀 Start dev server" }
],
"triggerNext": "onboarding-step-3",
"description": "⚙️ Step 2 — Setup environment"
},
{
"id": "onboarding-step-3",
"onStart": true,
"notify": [
{ "url": "https://company.slack.com/channels/dev-team", "description": "💬 Join the team channel" },
{ "file": "docs/CODING_STANDARDS.md", "description": "📏 Review coding standards" }
],
"description": "🤝 Step 3 — Join the team"
}
]
}
Multi-language project
{
"onChange": "src/**/*.{py,java,rs,go}",
"notify": [
{ "file": "tests/test_{{TRIGGER_NAME}}.{py,java,rs,go}", "description": "🧪 Update tests" }
],
"description": "🔧 Source file modified"
}
Combined workflow (Chained + Git + Schedule + Manual)
{
"patterns": [
{
"onBranchCreate": { "name": "feature/*" },
"notify": [
{ "file": "docs/features/{{BRANCH_SUFFIX}}.md", "description": "📝 Document feature" }
],
"description": "🌱 New feature branch"
},
{
"onSchedule": { "time": "09:00", "days": ["monday", "wednesday", "friday"] },
"notify": [
{ "url": "https://meet.google.com/standup", "description": "🕘 Standup — {{DAY_NAME_FR}}" }
]
},
{
"onManual": "release",
"manualTitle": "🚀 Release Checklist",
"notify": [
{ "commands": ["npm test", "npm run build"], "description": "✅ Validate" },
{ "file": "CHANGELOG.md", "description": "📋 Update changelog" },
{ "commands": ["npm version patch"], "description": "🔖 Bump version" }
]
}
]
}
Ready-to-Use Pattern Library
Skip the setup — grab pre-built, tested patterns for your stack:
React · Vue.js · Angular · Node.js · TypeScript · Python · and more
Features at a Glance
| Feature | Free | Premium |
|---|---|---|
| File monitoring (onChange, onCreate, onDelete...) | 10 patterns | Unlimited |
| Scheduled reminders (onSchedule) | 5 reminders | Unlimited |
| Manual commands (onManual) | 5 commands | Unlimited |
| Adaptive variables (auto-detect project structure) | Yes | Yes |
| Custom variables | Yes | Yes |
| Runtime variables (TRIGGER_NAME, TRIGGER_PATH...) | Yes | Yes |
| Interactive Todo list | Yes | Yes |
| JSON auto-completion & validation | Yes | Yes |
| Multilingual support (English & French) | Yes | Yes |
| 4 notification types (file, folder, command, URL) | Yes | Yes |
| Inline hints in code | Yes | Yes |
| Chained patterns (implicit workflow) | Yes | Yes |
Linked tasks with triggerNext (explicit workflow) |
Yes | Yes |
Pattern identification (id) |
Yes | Yes |
| Content filtering | Yes | Yes |
Execution requirements (requires) |
Yes | Yes |
External links (url) |
Yes | Yes |
onStart onboarding trigger |
Yes | Yes |
Individual pattern toggle (enabled) |
Yes | Yes |
| Health check & workspace statistics | Yes | Yes |
| Silent mode | Yes | Yes |
| Variable transformations (17 pipe filters) | Yes | Yes |
| Generate AI instructions (Cursor, Copilot, Claude, Codex, Windsurf) | Yes | Yes |
| Git events (branch, commit, pull, push) | — | Yes |
| Git dynamic variables (13+ variables) | — | Yes |
| Modular config (import pattern files) | — | Yes |
| Priority support | — | Yes |
Free vs Premium
Free — Perfect to get started
- 10 file-monitoring patterns — Perfect for small to medium projects
- 5 scheduled reminders — Daily standups, end-of-day commits, weekly reviews
- 5 manual commands — Your most important workflows on-demand
- Full adaptive, runtime & custom variables
- 17 variable transformations —
{{NAME | camelCase}},{{PATH | basename}},{{NAME | replace:old:new}} - 4 notification types (file, folder, command, URL)
- Execution requirements (
requires) — condition-based pattern execution with dependency tracking - Chained patterns & linked tasks (
triggerNext) - Inline hints, content filtering, pattern identification
- Interactive Todo list, JSON schema, multilingual support
onStarttrigger, pattern toggle, silent mode- Health check & workspace statistics
- AI instructions generator — one click to configure Cursor, Copilot, Claude, Codex or Windsurf to auto-maintain your patterns
Premium — $6/month · For teams and power users
Everything in Free, plus:
- Unlimited patterns, reminders, and manual commands
- Git event automation — branch, commit, pull, push triggers
- 13+ Git dynamic variables —
{{BRANCH_NAME}},{{COMMIT_MESSAGE}}, etc. - Modular configuration — split patterns across files with
imports - Priority support
- 14-day free trial
All Commands
| Command | Shortcut | Description |
|---|---|---|
ModCodePattern: Open Todo List |
— | View your pattern-generated tasks |
ModCodePattern: Run Pattern |
— | Execute a manual command |
ModCodePattern: Show Adaptive Variables |
— | See detected project variables & status |
ModCodePattern: Toggle All Patterns |
Ctrl+Shift+Alt+P |
Pause / resume all patterns |
ModCodePattern: Toggle Notifications |
— | Mute / unmute popup notifications |
ModCodePattern: Run Health Check |
— | Diagnose pattern issues & variables |
ModCodePattern: Show Workspace Statistics |
— | View usage and limits |
ModCodePattern: Show License Status |
— | Check your current plan |
ModCodePattern: Upgrade to Premium |
— | Open the upgrade page |
ModCodePattern: Refresh Cache |
— | Reload variables and cache |
ModCodePattern: Start |
— | Trigger onStart patterns manually |
ModCodePattern: Generate AI Instructions |
— | Generate AI agent config file for Cursor, Copilot, Claude, Codex or Windsurf |
Resources
- Complete Documentation — Full interactive guide with all features
- Pattern Library — Ready-to-use patterns by technology
- Pattern Builder — Visual pattern generator
- French Documentation — Guide utilisateur complet en français
Current version: v0.4.4 | Engine: VS Code 1.74.0+ | Startup: < 200ms | License: MIT
Made with precision for developers who care about consistency.