claude-code-orchestrator-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/database/workers/api-builder.md +155 -0
- package/.claude/agents/database/workers/database-architect.md +193 -0
- package/.claude/agents/database/workers/supabase-auditor.md +1070 -0
- package/.claude/agents/development/workers/code-reviewer.md +968 -0
- package/.claude/agents/development/workers/cost-calculator-specialist.md +683 -0
- package/.claude/agents/development/workers/llm-service-specialist.md +999 -0
- package/.claude/agents/development/workers/skill-builder-v2.md +480 -0
- package/.claude/agents/development/workers/typescript-types-specialist.md +649 -0
- package/.claude/agents/development/workers/utility-builder.md +582 -0
- package/.claude/agents/documentation/workers/technical-writer.md +152 -0
- package/.claude/agents/frontend/workers/fullstack-nextjs-specialist.md +206 -0
- package/.claude/agents/frontend/workers/visual-effects-creator.md +159 -0
- package/.claude/agents/health/orchestrators/bug-orchestrator.md +1045 -0
- package/.claude/agents/health/orchestrators/dead-code-orchestrator.md +1045 -0
- package/.claude/agents/health/orchestrators/dependency-orchestrator.md +1045 -0
- package/.claude/agents/health/orchestrators/security-orchestrator.md +1045 -0
- package/.claude/agents/health/workers/bug-fixer.md +525 -0
- package/.claude/agents/health/workers/bug-hunter.md +649 -0
- package/.claude/agents/health/workers/dead-code-hunter.md +446 -0
- package/.claude/agents/health/workers/dead-code-remover.md +437 -0
- package/.claude/agents/health/workers/dependency-auditor.md +379 -0
- package/.claude/agents/health/workers/dependency-updater.md +436 -0
- package/.claude/agents/health/workers/security-scanner.md +700 -0
- package/.claude/agents/health/workers/vulnerability-fixer.md +524 -0
- package/.claude/agents/infrastructure/workers/infrastructure-specialist.md +156 -0
- package/.claude/agents/infrastructure/workers/orchestration-logic-specialist.md +1260 -0
- package/.claude/agents/infrastructure/workers/qdrant-specialist.md +503 -0
- package/.claude/agents/infrastructure/workers/quality-validator-specialist.md +984 -0
- package/.claude/agents/meta/workers/meta-agent-v3.md +503 -0
- package/.claude/agents/research/workers/problem-investigator.md +507 -0
- package/.claude/agents/research/workers/research-specialist.md +423 -0
- package/.claude/agents/testing/workers/accessibility-tester.md +813 -0
- package/.claude/agents/testing/workers/integration-tester.md +188 -0
- package/.claude/agents/testing/workers/mobile-fixes-implementer.md +252 -0
- package/.claude/agents/testing/workers/mobile-responsiveness-tester.md +180 -0
- package/.claude/agents/testing/workers/performance-optimizer.md +262 -0
- package/.claude/agents/testing/workers/test-writer.md +800 -0
- package/.claude/commands/health-bugs.md +297 -0
- package/.claude/commands/health-cleanup.md +297 -0
- package/.claude/commands/health-deps.md +297 -0
- package/.claude/commands/health-metrics.md +747 -0
- package/.claude/commands/health-security.md +297 -0
- package/.claude/commands/push.md +21 -0
- package/.claude/commands/speckit.analyze.md +184 -0
- package/.claude/commands/speckit.checklist.md +294 -0
- package/.claude/commands/speckit.clarify.md +178 -0
- package/.claude/commands/speckit.constitution.md +78 -0
- package/.claude/commands/speckit.implement.md +182 -0
- package/.claude/commands/speckit.plan.md +87 -0
- package/.claude/commands/speckit.specify.md +250 -0
- package/.claude/commands/speckit.tasks.md +137 -0
- package/.claude/commands/translate-doc.md +95 -0
- package/.claude/commands/worktree-cleanup.md +382 -0
- package/.claude/commands/worktree-create.md +287 -0
- package/.claude/commands/worktree-list.md +239 -0
- package/.claude/commands/worktree-remove.md +339 -0
- package/.claude/schemas/base-plan.schema.json +82 -0
- package/.claude/schemas/bug-plan.schema.json +71 -0
- package/.claude/schemas/dead-code-plan.schema.json +71 -0
- package/.claude/schemas/dependency-plan.schema.json +74 -0
- package/.claude/schemas/security-plan.schema.json +71 -0
- package/.claude/scripts/gates/check-bundle-size.sh +47 -0
- package/.claude/scripts/gates/check-coverage.sh +67 -0
- package/.claude/scripts/gates/check-security.sh +46 -0
- package/.claude/scripts/release.sh +740 -0
- package/.claude/settings.local.json +21 -0
- package/.claude/settings.local.json.example +20 -0
- package/.claude/skills/calculate-priority-score/SKILL.md +229 -0
- package/.claude/skills/calculate-priority-score/scoring-matrix.json +83 -0
- package/.claude/skills/extract-version/SKILL.md +228 -0
- package/.claude/skills/format-commit-message/SKILL.md +189 -0
- package/.claude/skills/format-commit-message/template.md +64 -0
- package/.claude/skills/format-markdown-table/SKILL.md +202 -0
- package/.claude/skills/format-markdown-table/examples.md +84 -0
- package/.claude/skills/format-todo-list/SKILL.md +222 -0
- package/.claude/skills/format-todo-list/template.json +30 -0
- package/.claude/skills/generate-changelog/SKILL.md +258 -0
- package/.claude/skills/generate-changelog/commit-mapping.json +47 -0
- package/.claude/skills/generate-report-header/SKILL.md +228 -0
- package/.claude/skills/generate-report-header/template.md +66 -0
- package/.claude/skills/parse-error-logs/SKILL.md +286 -0
- package/.claude/skills/parse-error-logs/patterns.json +26 -0
- package/.claude/skills/parse-git-status/SKILL.md +164 -0
- package/.claude/skills/parse-package-json/SKILL.md +151 -0
- package/.claude/skills/parse-package-json/schema.json +43 -0
- package/.claude/skills/render-template/SKILL.md +245 -0
- package/.claude/skills/rollback-changes/SKILL.md +582 -0
- package/.claude/skills/rollback-changes/changes-log-schema.json +101 -0
- package/.claude/skills/run-quality-gate/SKILL.md +404 -0
- package/.claude/skills/run-quality-gate/gate-mappings.json +97 -0
- package/.claude/skills/validate-plan-file/SKILL.md +327 -0
- package/.claude/skills/validate-plan-file/schema.json +35 -0
- package/.claude/skills/validate-report-file/SKILL.md +256 -0
- package/.claude/skills/validate-report-file/schema.json +67 -0
- package/.env.example +49 -0
- package/.github/BRANCH_PROTECTION.md +137 -0
- package/.github/workflows/build.yml +70 -0
- package/.github/workflows/claude-code-review.yml +255 -0
- package/.github/workflows/claude.yml +79 -0
- package/.github/workflows/deploy-staging.yml +90 -0
- package/.github/workflows/test.yml +104 -0
- package/.gitignore +116 -0
- package/CLAUDE.md +137 -0
- package/LICENSE +72 -0
- package/README.md +1098 -0
- package/docs/ARCHITECTURE.md +746 -0
- package/docs/Agents Ecosystem/AGENT-ORCHESTRATION.md +568 -0
- package/docs/Agents Ecosystem/AI-AGENT-ECOSYSTEM-README.md +658 -0
- package/docs/Agents Ecosystem/ARCHITECTURE.md +606 -0
- package/docs/Agents Ecosystem/QUALITY-GATES-SPECIFICATION.md +1315 -0
- package/docs/Agents Ecosystem/REPORT-TEMPLATE-STANDARD.md +1324 -0
- package/docs/Agents Ecosystem/spec-kit-comprehensive-updates.md +478 -0
- package/docs/FAQ.md +572 -0
- package/docs/MIGRATION-GUIDE.md +542 -0
- package/docs/PERFORMANCE-OPTIMIZATION.md +494 -0
- package/docs/ROADMAP.md +439 -0
- package/docs/TUTORIAL-CUSTOM-AGENTS.md +2041 -0
- package/docs/USE-CASES.md +706 -0
- package/index.js +96 -0
- package/mcp/.mcp.base.json +21 -0
- package/mcp/.mcp.frontend.json +29 -0
- package/mcp/.mcp.full.json +67 -0
- package/mcp/.mcp.local.example.json +7 -0
- package/mcp/.mcp.local.json +7 -0
- package/mcp/.mcp.n8n.json +45 -0
- package/mcp/.mcp.supabase-full.json +35 -0
- package/mcp/.mcp.supabase-only.json +28 -0
- package/package.json +78 -0
- package/postinstall.js +71 -0
- package/switch-mcp.sh +101 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: parse-git-status
|
|
3
|
+
description: Parse git status output into structured data showing staged, modified, and untracked files. Use for pre-flight validation, checking clean working directory, or listing changed files before commits.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Parse Git Status
|
|
7
|
+
|
|
8
|
+
Parse git status command output into structured JSON for programmatic analysis.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Pre-flight checks before workflow execution
|
|
13
|
+
- Validate clean working directory
|
|
14
|
+
- List modified files for commit
|
|
15
|
+
- Check for uncommitted changes
|
|
16
|
+
|
|
17
|
+
## Instructions
|
|
18
|
+
|
|
19
|
+
### Step 1: Receive Git Status Output
|
|
20
|
+
|
|
21
|
+
Accept raw git status output as input.
|
|
22
|
+
|
|
23
|
+
**Expected Input**:
|
|
24
|
+
- `gitStatusOutput`: String (raw output from `git status --porcelain` or regular `git status`)
|
|
25
|
+
|
|
26
|
+
### Step 2: Parse Branch Information
|
|
27
|
+
|
|
28
|
+
Extract current branch and tracking information.
|
|
29
|
+
|
|
30
|
+
**Patterns**:
|
|
31
|
+
- `## branch-name`: Current branch
|
|
32
|
+
- `## branch-name...origin/branch-name`: Tracking branch
|
|
33
|
+
- `[ahead N]` or `[behind N]`: Ahead/behind commits
|
|
34
|
+
|
|
35
|
+
### Step 3: Categorize Files
|
|
36
|
+
|
|
37
|
+
Parse file status indicators and categorize.
|
|
38
|
+
|
|
39
|
+
**Status Indicators** (porcelain format):
|
|
40
|
+
- `M `: Modified (staged)
|
|
41
|
+
- ` M`: Modified (unstaged)
|
|
42
|
+
- `A `: Added (staged)
|
|
43
|
+
- `D `: Deleted (staged)
|
|
44
|
+
- `R `: Renamed (staged)
|
|
45
|
+
- `??`: Untracked
|
|
46
|
+
- `!!`: Ignored
|
|
47
|
+
|
|
48
|
+
### Step 4: Return Structured Data
|
|
49
|
+
|
|
50
|
+
Return parsed data as JSON object.
|
|
51
|
+
|
|
52
|
+
**Expected Output**:
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"branch": "main",
|
|
56
|
+
"tracking": "origin/main",
|
|
57
|
+
"ahead": 0,
|
|
58
|
+
"behind": 0,
|
|
59
|
+
"staged": ["file1.ts", "file2.ts"],
|
|
60
|
+
"modified": ["file3.ts"],
|
|
61
|
+
"deleted": [],
|
|
62
|
+
"renamed": [],
|
|
63
|
+
"untracked": ["file4.ts"],
|
|
64
|
+
"clean": false
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Error Handling
|
|
69
|
+
|
|
70
|
+
- **Invalid Git Output**: Return error describing format issue
|
|
71
|
+
- **Not a Git Repository**: Return error indicating no git repo
|
|
72
|
+
- **Empty Output**: Return clean status with empty arrays
|
|
73
|
+
|
|
74
|
+
## Examples
|
|
75
|
+
|
|
76
|
+
### Example 1: Clean Working Directory
|
|
77
|
+
|
|
78
|
+
**Input**:
|
|
79
|
+
```
|
|
80
|
+
On branch main
|
|
81
|
+
Your branch is up to date with 'origin/main'.
|
|
82
|
+
|
|
83
|
+
nothing to commit, working tree clean
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Output**:
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"branch": "main",
|
|
90
|
+
"tracking": "origin/main",
|
|
91
|
+
"ahead": 0,
|
|
92
|
+
"behind": 0,
|
|
93
|
+
"staged": [],
|
|
94
|
+
"modified": [],
|
|
95
|
+
"deleted": [],
|
|
96
|
+
"renamed": [],
|
|
97
|
+
"untracked": [],
|
|
98
|
+
"clean": true
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Example 2: Modified Files
|
|
103
|
+
|
|
104
|
+
**Input** (porcelain format):
|
|
105
|
+
```
|
|
106
|
+
## main...origin/main [ahead 2]
|
|
107
|
+
M src/utils.ts
|
|
108
|
+
M src/types.ts
|
|
109
|
+
A src/new-feature.ts
|
|
110
|
+
?? temp-file.js
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Output**:
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"branch": "main",
|
|
117
|
+
"tracking": "origin/main",
|
|
118
|
+
"ahead": 2,
|
|
119
|
+
"behind": 0,
|
|
120
|
+
"staged": ["src/utils.ts", "src/new-feature.ts"],
|
|
121
|
+
"modified": ["src/types.ts"],
|
|
122
|
+
"deleted": [],
|
|
123
|
+
"renamed": [],
|
|
124
|
+
"untracked": ["temp-file.js"],
|
|
125
|
+
"clean": false
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Example 3: Detached HEAD
|
|
130
|
+
|
|
131
|
+
**Input**:
|
|
132
|
+
```
|
|
133
|
+
## HEAD (no branch)
|
|
134
|
+
M README.md
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Output**:
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"branch": "HEAD (detached)",
|
|
141
|
+
"tracking": null,
|
|
142
|
+
"ahead": 0,
|
|
143
|
+
"behind": 0,
|
|
144
|
+
"staged": [],
|
|
145
|
+
"modified": ["README.md"],
|
|
146
|
+
"deleted": [],
|
|
147
|
+
"renamed": [],
|
|
148
|
+
"untracked": [],
|
|
149
|
+
"clean": false
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Validation
|
|
154
|
+
|
|
155
|
+
- [ ] Parses branch information correctly
|
|
156
|
+
- [ ] Categorizes files by status
|
|
157
|
+
- [ ] Handles empty/clean status
|
|
158
|
+
- [ ] Parses ahead/behind indicators
|
|
159
|
+
- [ ] Handles detached HEAD state
|
|
160
|
+
- [ ] Returns clean:true only when appropriate
|
|
161
|
+
|
|
162
|
+
## Supporting Files
|
|
163
|
+
|
|
164
|
+
None required - pure parsing logic.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: parse-package-json
|
|
3
|
+
description: Extract version, dependencies, and metadata from package.json files. Use when needing project version, dependency list, or package metadata for releases, audits, or reports.
|
|
4
|
+
allowed-tools: Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Parse Package JSON
|
|
8
|
+
|
|
9
|
+
Extract structured data from package.json files for version management, dependency auditing, and metadata retrieval.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Get current project version for release workflows
|
|
14
|
+
- Extract dependency list for auditing
|
|
15
|
+
- Read package metadata for reports
|
|
16
|
+
- Validate package.json structure
|
|
17
|
+
|
|
18
|
+
## Instructions
|
|
19
|
+
|
|
20
|
+
### Step 1: Read package.json
|
|
21
|
+
|
|
22
|
+
Use Read tool to load package.json file.
|
|
23
|
+
|
|
24
|
+
**Expected Input**:
|
|
25
|
+
- `file_path`: Path to package.json (default: `./package.json`)
|
|
26
|
+
|
|
27
|
+
**Tools Used**: Read
|
|
28
|
+
|
|
29
|
+
### Step 2: Parse JSON
|
|
30
|
+
|
|
31
|
+
Parse the JSON content and validate structure.
|
|
32
|
+
|
|
33
|
+
**Validation**:
|
|
34
|
+
- File must be valid JSON
|
|
35
|
+
- Must contain `name` and `version` fields at minimum
|
|
36
|
+
- Dependencies should be objects (if present)
|
|
37
|
+
|
|
38
|
+
### Step 3: Extract Fields
|
|
39
|
+
|
|
40
|
+
Extract relevant fields into structured output.
|
|
41
|
+
|
|
42
|
+
**Fields to Extract**:
|
|
43
|
+
- `version`: Semantic version string
|
|
44
|
+
- `name`: Package name
|
|
45
|
+
- `description`: Package description (optional)
|
|
46
|
+
- `dependencies`: Production dependencies object (optional)
|
|
47
|
+
- `devDependencies`: Development dependencies object (optional)
|
|
48
|
+
- `scripts`: Available npm scripts (optional)
|
|
49
|
+
- `main`: Entry point file (optional)
|
|
50
|
+
- `private`: Private flag (optional)
|
|
51
|
+
|
|
52
|
+
### Step 4: Return Structured Data
|
|
53
|
+
|
|
54
|
+
Return extracted data as JSON object.
|
|
55
|
+
|
|
56
|
+
**Expected Output**:
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"version": "0.7.0",
|
|
60
|
+
"name": "megacampus2",
|
|
61
|
+
"description": "Project description",
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"react": "^18.2.0"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"typescript": "^5.0.0"
|
|
67
|
+
},
|
|
68
|
+
"scripts": {
|
|
69
|
+
"build": "tsc",
|
|
70
|
+
"test": "jest"
|
|
71
|
+
},
|
|
72
|
+
"main": "dist/index.js",
|
|
73
|
+
"private": true
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Error Handling
|
|
78
|
+
|
|
79
|
+
- **File Not Found**: Return error with message "package.json not found at {path}"
|
|
80
|
+
- **Invalid JSON**: Return error with parsing details
|
|
81
|
+
- **Missing Required Fields**: Return error listing missing fields (name, version)
|
|
82
|
+
- **Invalid Structure**: Return error describing structure issue
|
|
83
|
+
|
|
84
|
+
## Examples
|
|
85
|
+
|
|
86
|
+
### Example 1: Extract Version
|
|
87
|
+
|
|
88
|
+
**Input**:
|
|
89
|
+
```
|
|
90
|
+
file_path: ./package.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Output**:
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"version": "0.7.0",
|
|
97
|
+
"name": "megacampus2"
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Example 2: Full Package Info
|
|
102
|
+
|
|
103
|
+
**Input**:
|
|
104
|
+
```
|
|
105
|
+
file_path: ./packages/client/package.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Output**:
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"version": "1.2.3",
|
|
112
|
+
"name": "@megacampus/client",
|
|
113
|
+
"dependencies": {
|
|
114
|
+
"react": "^18.2.0",
|
|
115
|
+
"react-dom": "^18.2.0"
|
|
116
|
+
},
|
|
117
|
+
"scripts": {
|
|
118
|
+
"dev": "vite",
|
|
119
|
+
"build": "vite build"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Example 3: Error - File Not Found
|
|
125
|
+
|
|
126
|
+
**Input**:
|
|
127
|
+
```
|
|
128
|
+
file_path: ./nonexistent.json
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Output**:
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"error": "package.json not found at ./nonexistent.json",
|
|
135
|
+
"success": false
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Validation
|
|
140
|
+
|
|
141
|
+
- [ ] Can read package.json from default path
|
|
142
|
+
- [ ] Can read package.json from custom path
|
|
143
|
+
- [ ] Extracts all specified fields correctly
|
|
144
|
+
- [ ] Handles missing optional fields gracefully
|
|
145
|
+
- [ ] Returns error for missing file
|
|
146
|
+
- [ ] Returns error for invalid JSON
|
|
147
|
+
- [ ] Returns error for missing required fields
|
|
148
|
+
|
|
149
|
+
## Supporting Files
|
|
150
|
+
|
|
151
|
+
- `schema.json`: JSON schema defining expected package.json structure
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "package.json Schema",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["name", "version"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"pattern": "^(@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$"
|
|
10
|
+
},
|
|
11
|
+
"version": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$"
|
|
14
|
+
},
|
|
15
|
+
"description": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"main": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"private": {
|
|
22
|
+
"type": "boolean"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": {
|
|
33
|
+
"type": "string"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": {
|
|
39
|
+
"type": "string"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: render-template
|
|
3
|
+
description: Render templates with variable substitution using {{variable}} or ${variable} syntax. Use for generating formatted output, reports, commit messages, or any text requiring variable interpolation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Render Template
|
|
7
|
+
|
|
8
|
+
Render templates with variable substitution, supporting various syntax formats and helper functions.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Format commit messages with dynamic data
|
|
13
|
+
- Generate report sections with variables
|
|
14
|
+
- Create formatted outputs from templates
|
|
15
|
+
- Replace placeholders in text templates
|
|
16
|
+
- Consolidate formatting logic across Skills
|
|
17
|
+
|
|
18
|
+
## Instructions
|
|
19
|
+
|
|
20
|
+
### Step 1: Receive Template and Data
|
|
21
|
+
|
|
22
|
+
Accept template string and variable data.
|
|
23
|
+
|
|
24
|
+
**Expected Input**:
|
|
25
|
+
- `template`: String (template with placeholders)
|
|
26
|
+
- `variables`: Object (key-value pairs for substitution)
|
|
27
|
+
- `syntax`: String (optional: mustache|shell|mixed, default: mustache)
|
|
28
|
+
|
|
29
|
+
**Supported Syntax**:
|
|
30
|
+
- **Mustache**: `{{variable}}`, `{{object.property}}`
|
|
31
|
+
- **Shell**: `${variable}`, `${VARIABLE}`
|
|
32
|
+
- **Mixed**: Supports both
|
|
33
|
+
|
|
34
|
+
### Step 2: Parse Template
|
|
35
|
+
|
|
36
|
+
Identify all placeholders in template.
|
|
37
|
+
|
|
38
|
+
**Placeholder Patterns**:
|
|
39
|
+
- `{{variable}}`: Simple variable
|
|
40
|
+
- `{{object.property}}`: Nested property
|
|
41
|
+
- `{{#if condition}}...{{/if}}`: Conditional (optional)
|
|
42
|
+
- `{{#each array}}...{{/each}}`: Loop (optional)
|
|
43
|
+
|
|
44
|
+
### Step 3: Resolve Variables
|
|
45
|
+
|
|
46
|
+
Replace placeholders with values from variables object.
|
|
47
|
+
|
|
48
|
+
**Resolution Rules**:
|
|
49
|
+
- Direct match: `{{name}}` ā `variables.name`
|
|
50
|
+
- Nested property: `{{user.name}}` ā `variables.user.name`
|
|
51
|
+
- Missing variable: Replace with empty string or keep placeholder (configurable)
|
|
52
|
+
- Undefined: Replace with empty string
|
|
53
|
+
|
|
54
|
+
### Step 4: Apply Filters (Optional)
|
|
55
|
+
|
|
56
|
+
Support simple filters if specified.
|
|
57
|
+
|
|
58
|
+
**Common Filters**:
|
|
59
|
+
- `{{variable | uppercase}}`: Convert to uppercase
|
|
60
|
+
- `{{variable | lowercase}}`: Convert to lowercase
|
|
61
|
+
- `{{variable | capitalize}}`: Capitalize first letter
|
|
62
|
+
- `{{date | format:YYYY-MM-DD}}`: Format date
|
|
63
|
+
|
|
64
|
+
### Step 5: Return Rendered Output
|
|
65
|
+
|
|
66
|
+
Return final rendered string.
|
|
67
|
+
|
|
68
|
+
**Expected Output**: String (template with variables replaced)
|
|
69
|
+
|
|
70
|
+
## Error Handling
|
|
71
|
+
|
|
72
|
+
- **Missing Variables**: Replace with empty string or warn (configurable)
|
|
73
|
+
- **Invalid Template Syntax**: Return error describing syntax issue
|
|
74
|
+
- **Circular References**: Detect and return error
|
|
75
|
+
- **Type Mismatch**: Convert to string automatically
|
|
76
|
+
|
|
77
|
+
## Examples
|
|
78
|
+
|
|
79
|
+
### Example 1: Simple Variable Substitution
|
|
80
|
+
|
|
81
|
+
**Input**:
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"template": "Hello {{name}}, your score is {{score}}!",
|
|
85
|
+
"variables": {
|
|
86
|
+
"name": "Alice",
|
|
87
|
+
"score": 95
|
|
88
|
+
},
|
|
89
|
+
"syntax": "mustache"
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Output**:
|
|
94
|
+
```
|
|
95
|
+
Hello Alice, your score is 95!
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Example 2: Nested Properties
|
|
99
|
+
|
|
100
|
+
**Input**:
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"template": "User: {{user.name}} ({{user.email}})\nRole: {{user.role}}",
|
|
104
|
+
"variables": {
|
|
105
|
+
"user": {
|
|
106
|
+
"name": "Bob",
|
|
107
|
+
"email": "bob@example.com",
|
|
108
|
+
"role": "admin"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Output**:
|
|
115
|
+
```
|
|
116
|
+
User: Bob (bob@example.com)
|
|
117
|
+
Role: admin
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Example 3: Shell Syntax
|
|
121
|
+
|
|
122
|
+
**Input**:
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"template": "Version: ${VERSION}\nDate: ${RELEASE_DATE}",
|
|
126
|
+
"variables": {
|
|
127
|
+
"VERSION": "0.8.0",
|
|
128
|
+
"RELEASE_DATE": "2025-10-17"
|
|
129
|
+
},
|
|
130
|
+
"syntax": "shell"
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Output**:
|
|
135
|
+
```
|
|
136
|
+
Version: 0.8.0
|
|
137
|
+
Date: 2025-10-17
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Example 4: Commit Message Template
|
|
141
|
+
|
|
142
|
+
**Input**:
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"template": "{{type}}({{scope}}): {{description}}\n\n{{body}}\n\nš¤ Generated with Claude Code\nCo-Authored-By: Claude <noreply@anthropic.com>",
|
|
146
|
+
"variables": {
|
|
147
|
+
"type": "feat",
|
|
148
|
+
"scope": "auth",
|
|
149
|
+
"description": "add OAuth2 support",
|
|
150
|
+
"body": "Implemented OAuth2 flow with token refresh.\nSupports Google and GitHub providers."
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Output**:
|
|
156
|
+
```
|
|
157
|
+
feat(auth): add OAuth2 support
|
|
158
|
+
|
|
159
|
+
Implemented OAuth2 flow with token refresh.
|
|
160
|
+
Supports Google and GitHub providers.
|
|
161
|
+
|
|
162
|
+
š¤ Generated with Claude Code
|
|
163
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Example 5: Missing Variables
|
|
167
|
+
|
|
168
|
+
**Input**:
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"template": "Name: {{name}}\nAge: {{age}}\nCity: {{city}}",
|
|
172
|
+
"variables": {
|
|
173
|
+
"name": "Alice"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Output (with empty string replacement)**:
|
|
179
|
+
```
|
|
180
|
+
Name: Alice
|
|
181
|
+
Age:
|
|
182
|
+
City:
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Output (with keep placeholder)**:
|
|
186
|
+
```
|
|
187
|
+
Name: Alice
|
|
188
|
+
Age: {{age}}
|
|
189
|
+
City: {{city}}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Example 6: Report Header Template
|
|
193
|
+
|
|
194
|
+
**Input**:
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"template": "# {{reportType}} Report: {{version}}\n\n**Generated**: {{timestamp}}\n**Status**: {{statusEmoji}} {{status}}\n**Version**: {{version}}",
|
|
198
|
+
"variables": {
|
|
199
|
+
"reportType": "Bug Hunting",
|
|
200
|
+
"version": "2025-10-17",
|
|
201
|
+
"timestamp": "2025-10-17 14:30:00 UTC",
|
|
202
|
+
"statusEmoji": "ā
",
|
|
203
|
+
"status": "success"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Output**:
|
|
209
|
+
```markdown
|
|
210
|
+
# Bug Hunting Report: 2025-10-17
|
|
211
|
+
|
|
212
|
+
**Generated**: 2025-10-17 14:30:00 UTC
|
|
213
|
+
**Status**: ā
success
|
|
214
|
+
**Version**: 2025-10-17
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Validation
|
|
218
|
+
|
|
219
|
+
- [ ] Replaces simple variables correctly
|
|
220
|
+
- [ ] Handles nested properties
|
|
221
|
+
- [ ] Supports multiple syntax formats
|
|
222
|
+
- [ ] Handles missing variables gracefully
|
|
223
|
+
- [ ] Converts types to strings
|
|
224
|
+
- [ ] Preserves formatting (line breaks, indentation)
|
|
225
|
+
- [ ] Detects circular references
|
|
226
|
+
- [ ] Returns clear error messages
|
|
227
|
+
|
|
228
|
+
## Supporting Files
|
|
229
|
+
|
|
230
|
+
None required - pure template rendering logic.
|
|
231
|
+
|
|
232
|
+
## Integration with Other Skills
|
|
233
|
+
|
|
234
|
+
This Skill consolidates formatting logic used by:
|
|
235
|
+
- **format-commit-message**: Use render-template for message formatting
|
|
236
|
+
- **generate-report-header**: Use render-template for header generation
|
|
237
|
+
- **format-todo-list**: Use render-template for activeForm generation
|
|
238
|
+
- **generate-changelog**: Use render-template for section formatting
|
|
239
|
+
|
|
240
|
+
**Example Integration**:
|
|
241
|
+
```
|
|
242
|
+
Instead of: Hard-coded string formatting in each Skill
|
|
243
|
+
Use: render-template Skill with predefined templates
|
|
244
|
+
Result: Consistent formatting, easier to maintain
|
|
245
|
+
```
|