@phuc1403/musketeer 0.7.0 → 0.9.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/README.md +49 -49
- package/manifest.json +333 -301
- package/package.json +1 -1
- package/template/.claude/agents/code-reviewer.md +182 -166
- package/template/.claude/hooks/git-skill-reminder.cjs +53 -0
- package/template/.claude/hooks/inject-design-docs.cjs +13 -13
- package/template/.claude/hooks/inject-ubiquitous-language.cjs +52 -0
- package/template/.claude/hooks/lib/colors.cjs +180 -122
- package/template/.claude/hooks/lib/transcript-parser.cjs +300 -277
- package/template/.claude/skills/code-review/SKILL.md +201 -54
- package/template/.claude/skills/code-review/references/checklist-workflow.md +96 -0
- package/template/.claude/skills/code-review/references/checklists/api.md +52 -52
- package/template/.claude/skills/code-review/references/checklists/base.md +100 -100
- package/template/.claude/skills/code-review/references/checklists/web-app.md +54 -54
- package/template/.claude/skills/code-review/references/code-review-reception.md +113 -0
- package/template/.claude/skills/code-review/references/codebase-scan-workflow.md +30 -0
- package/template/.claude/skills/code-review/references/edge-case-scouting.md +119 -0
- package/template/.claude/skills/code-review/references/input-mode-resolution.md +135 -0
- package/template/.claude/skills/code-review/references/parallel-review-workflow.md +76 -0
- package/template/.claude/skills/code-review/references/requesting-code-review.md +116 -0
- package/template/.claude/skills/code-review/references/spec-compliance-review.md +43 -0
- package/template/.claude/skills/code-review/references/task-management-reviews.md +140 -0
- package/template/.claude/skills/code-review/references/verification-before-completion.md +139 -0
- package/template/.claude/skills/context-map/SKILL.md +1 -1
- package/template/.claude/skills/git/SKILL.md +131 -115
- package/template/.claude/skills/git/references/branch-management.md +88 -88
- package/template/.claude/skills/git/references/commit-standards.md +46 -46
- package/template/.claude/skills/git/references/context-efficiency.md +54 -0
- package/template/.claude/skills/git/references/gh-cli-guide.md +109 -109
- package/template/.claude/skills/git/references/safety-protocols.md +69 -69
- package/template/.claude/skills/git/references/workflow-commit.md +58 -58
- package/template/.claude/skills/git/references/workflow-merge-pr.md +136 -0
- package/template/.claude/skills/git/references/workflow-merge.md +48 -48
- package/template/.claude/skills/git/references/workflow-pr.md +58 -58
- package/template/.claude/skills/git/references/workflow-push.md +52 -52
- package/template/.claude/skills/knowledge-crunching/SKILL.md +56 -92
- package/template/.claude/skills/knowledge-crunching/assets/ubiquitous-language.template.md +3 -0
- package/template/.claude/skills/skill-creator/LICENSE.txt +201 -201
- package/template/.claude/skills/skill-creator/SKILL.md +154 -149
- package/template/.claude/skills/skill-creator/agents/analyzer.md +274 -274
- package/template/.claude/skills/skill-creator/agents/comparator.md +202 -202
- package/template/.claude/skills/skill-creator/agents/grader.md +223 -223
- package/template/.claude/skills/skill-creator/assets/eval_review.html +146 -146
- package/template/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -471
- package/template/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -1325
- package/template/.claude/skills/skill-creator/references/benchmark-optimization-guide.md +86 -86
- package/template/.claude/skills/skill-creator/references/distribution-guide.md +79 -79
- package/template/.claude/skills/skill-creator/references/eval-infrastructure-guide.md +129 -129
- package/template/.claude/skills/skill-creator/references/eval-schemas.md +121 -121
- package/template/.claude/skills/skill-creator/references/mcp-skills-integration.md +71 -71
- package/template/.claude/skills/skill-creator/references/metadata-quality-criteria.md +94 -94
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -104
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-overview.md +89 -89
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-schema.md +93 -93
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-sources.md +103 -103
- package/template/.claude/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -76
- package/template/.claude/skills/skill-creator/references/script-quality-criteria.md +106 -106
- package/template/.claude/skills/skill-creator/references/skill-anatomy-and-requirements.md +77 -77
- package/template/.claude/skills/skill-creator/references/skill-creation-workflow.md +152 -151
- package/template/.claude/skills/skill-creator/references/skill-design-patterns.md +75 -75
- package/template/.claude/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -102
- package/template/.claude/skills/skill-creator/references/structure-organization-criteria.md +114 -114
- package/template/.claude/skills/skill-creator/references/testing-and-iteration.md +78 -78
- package/template/.claude/skills/skill-creator/references/token-efficiency-criteria.md +74 -74
- package/template/.claude/skills/skill-creator/references/troubleshooting-guide.md +81 -81
- package/template/.claude/skills/skill-creator/references/validation-checklist.md +83 -83
- package/template/.claude/skills/skill-creator/references/writing-effective-instructions.md +88 -88
- package/template/.claude/skills/skill-creator/references/yaml-frontmatter-reference.md +92 -92
- package/template/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -401
- package/template/.claude/skills/skill-creator/scripts/encoding_utils.py +36 -36
- package/template/.claude/skills/skill-creator/scripts/generate_report.py +326 -326
- package/template/.claude/skills/skill-creator/scripts/improve_description.py +248 -248
- package/template/.claude/skills/skill-creator/scripts/init_skill.py +360 -360
- package/template/.claude/skills/skill-creator/scripts/package_skill.py +143 -143
- package/template/.claude/skills/skill-creator/scripts/quick_validate.py +110 -110
- package/template/.claude/skills/skill-creator/scripts/run_eval.py +310 -310
- package/template/.claude/skills/skill-creator/scripts/run_loop.py +332 -332
- package/template/.claude/skills/skill-creator/scripts/utils.py +47 -47
- package/template/.claude/statusline.cjs +0 -0
- package/template/.claude/hooks/inject-context.cjs +0 -52
- package/template/.claude/skills/code-review/references/adversarial-review.md +0 -223
- package/template/.claude/skills/knowledge-crunching/assets/context.template.md +0 -59
- package/template/.claude/skills/knowledge-crunching/references/crunching-dialogue.md +0 -113
- /package/template/.claude/hooks/{usage-context-awareness.cjs → usage-quota-cache-refresh.cjs} +0 -0
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
# Eval JSON Schemas
|
|
2
|
-
|
|
3
|
-
All JSON schemas used by the eval infrastructure.
|
|
4
|
-
|
|
5
|
-
## evals.json — Test Cases
|
|
6
|
-
|
|
7
|
-
```json
|
|
8
|
-
{
|
|
9
|
-
"skill_name": "example-skill",
|
|
10
|
-
"evals": [
|
|
11
|
-
{
|
|
12
|
-
"id": 0,
|
|
13
|
-
"prompt": "User task prompt",
|
|
14
|
-
"expected_output": "Description of correct output",
|
|
15
|
-
"files": [],
|
|
16
|
-
"assertions": [
|
|
17
|
-
{"id": "assertion-1", "text": "Output contains valid JSON"},
|
|
18
|
-
{"id": "assertion-2", "text": "All rows processed correctly"}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## eval_metadata.json — Per-Test Metadata
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"eval_id": 0,
|
|
30
|
-
"eval_name": "descriptive-name",
|
|
31
|
-
"prompt": "Task prompt",
|
|
32
|
-
"assertions": [
|
|
33
|
-
{"id": "assertion-1", "text": "Output contains valid JSON"}
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## grading.json — Grader Output
|
|
39
|
-
|
|
40
|
-
```json
|
|
41
|
-
{
|
|
42
|
-
"expectations": [
|
|
43
|
-
{"text": "Output contains valid JSON", "passed": true, "evidence": "File output.json parsed successfully"}
|
|
44
|
-
],
|
|
45
|
-
"pass_rate": 0.75,
|
|
46
|
-
"metrics": {
|
|
47
|
-
"execution_time_ms": 12500,
|
|
48
|
-
"tokens_used": 8400,
|
|
49
|
-
"tool_calls": 5
|
|
50
|
-
},
|
|
51
|
-
"claims": ["Additional observations beyond assertions"],
|
|
52
|
-
"critique": "Evaluation feedback on criteria quality"
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Field names are exact** — viewer depends on: `text` (not name), `passed` (not met), `evidence` (not details).
|
|
57
|
-
|
|
58
|
-
## benchmark.json — Aggregated Stats
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"metadata": {"skill_name": "example", "timestamp": "..."},
|
|
63
|
-
"runs": [{"eval_id": 0, "config": "with_skill", "pass_rate": 0.85}],
|
|
64
|
-
"summaries": {
|
|
65
|
-
"with_skill": {"mean_pass_rate": 0.85, "stddev": 0.05},
|
|
66
|
-
"without_skill": {"mean_pass_rate": 0.45, "stddev": 0.10}
|
|
67
|
-
},
|
|
68
|
-
"deltas": {"pass_rate_delta": 0.40, "tokens_delta": -2000}
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## timing.json — Duration & Tokens
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{
|
|
76
|
-
"total_tokens": 84852,
|
|
77
|
-
"duration_ms": 23332,
|
|
78
|
-
"total_duration_seconds": 23.3
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Must capture immediately from subagent notifications — data not persisted elsewhere.
|
|
83
|
-
|
|
84
|
-
## feedback.json — Human Reviews
|
|
85
|
-
|
|
86
|
-
```json
|
|
87
|
-
{
|
|
88
|
-
"reviews": [
|
|
89
|
-
{"run_id": "eval-0-with_skill", "feedback": "User comment", "timestamp": "..."}
|
|
90
|
-
],
|
|
91
|
-
"status": "complete"
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## comparison.json — Blind A/B Results
|
|
96
|
-
|
|
97
|
-
```json
|
|
98
|
-
{
|
|
99
|
-
"winner": "output_a",
|
|
100
|
-
"reasoning": "Detailed explanation with citations",
|
|
101
|
-
"scores": {"output_a": 8, "output_b": 6},
|
|
102
|
-
"content_score": {"correctness": 4, "completeness": 5},
|
|
103
|
-
"structure_score": {"organization": 4, "formatting": 3}
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## history.json — Optimization Iterations
|
|
108
|
-
|
|
109
|
-
```json
|
|
110
|
-
{
|
|
111
|
-
"versions": [
|
|
112
|
-
{
|
|
113
|
-
"description": "Current description text",
|
|
114
|
-
"pass_rate": 0.85,
|
|
115
|
-
"precision": 0.90,
|
|
116
|
-
"recall": 0.80,
|
|
117
|
-
"iteration": 1
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
}
|
|
121
|
-
```
|
|
1
|
+
# Eval JSON Schemas
|
|
2
|
+
|
|
3
|
+
All JSON schemas used by the eval infrastructure.
|
|
4
|
+
|
|
5
|
+
## evals.json — Test Cases
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"skill_name": "example-skill",
|
|
10
|
+
"evals": [
|
|
11
|
+
{
|
|
12
|
+
"id": 0,
|
|
13
|
+
"prompt": "User task prompt",
|
|
14
|
+
"expected_output": "Description of correct output",
|
|
15
|
+
"files": [],
|
|
16
|
+
"assertions": [
|
|
17
|
+
{"id": "assertion-1", "text": "Output contains valid JSON"},
|
|
18
|
+
{"id": "assertion-2", "text": "All rows processed correctly"}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## eval_metadata.json — Per-Test Metadata
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"eval_id": 0,
|
|
30
|
+
"eval_name": "descriptive-name",
|
|
31
|
+
"prompt": "Task prompt",
|
|
32
|
+
"assertions": [
|
|
33
|
+
{"id": "assertion-1", "text": "Output contains valid JSON"}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## grading.json — Grader Output
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"expectations": [
|
|
43
|
+
{"text": "Output contains valid JSON", "passed": true, "evidence": "File output.json parsed successfully"}
|
|
44
|
+
],
|
|
45
|
+
"pass_rate": 0.75,
|
|
46
|
+
"metrics": {
|
|
47
|
+
"execution_time_ms": 12500,
|
|
48
|
+
"tokens_used": 8400,
|
|
49
|
+
"tool_calls": 5
|
|
50
|
+
},
|
|
51
|
+
"claims": ["Additional observations beyond assertions"],
|
|
52
|
+
"critique": "Evaluation feedback on criteria quality"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Field names are exact** — viewer depends on: `text` (not name), `passed` (not met), `evidence` (not details).
|
|
57
|
+
|
|
58
|
+
## benchmark.json — Aggregated Stats
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"metadata": {"skill_name": "example", "timestamp": "..."},
|
|
63
|
+
"runs": [{"eval_id": 0, "config": "with_skill", "pass_rate": 0.85}],
|
|
64
|
+
"summaries": {
|
|
65
|
+
"with_skill": {"mean_pass_rate": 0.85, "stddev": 0.05},
|
|
66
|
+
"without_skill": {"mean_pass_rate": 0.45, "stddev": 0.10}
|
|
67
|
+
},
|
|
68
|
+
"deltas": {"pass_rate_delta": 0.40, "tokens_delta": -2000}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## timing.json — Duration & Tokens
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"total_tokens": 84852,
|
|
77
|
+
"duration_ms": 23332,
|
|
78
|
+
"total_duration_seconds": 23.3
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Must capture immediately from subagent notifications — data not persisted elsewhere.
|
|
83
|
+
|
|
84
|
+
## feedback.json — Human Reviews
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"reviews": [
|
|
89
|
+
{"run_id": "eval-0-with_skill", "feedback": "User comment", "timestamp": "..."}
|
|
90
|
+
],
|
|
91
|
+
"status": "complete"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## comparison.json — Blind A/B Results
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"winner": "output_a",
|
|
100
|
+
"reasoning": "Detailed explanation with citations",
|
|
101
|
+
"scores": {"output_a": 8, "output_b": 6},
|
|
102
|
+
"content_score": {"correctness": 4, "completeness": 5},
|
|
103
|
+
"structure_score": {"organization": 4, "formatting": 3}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## history.json — Optimization Iterations
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"versions": [
|
|
112
|
+
{
|
|
113
|
+
"description": "Current description text",
|
|
114
|
+
"pass_rate": 0.85,
|
|
115
|
+
"precision": 0.90,
|
|
116
|
+
"recall": 0.80,
|
|
117
|
+
"iteration": 1
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
```
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# MCP + Skills Integration
|
|
2
|
-
|
|
3
|
-
## The Kitchen Analogy
|
|
4
|
-
|
|
5
|
-
- **MCP** provides the professional kitchen: access to tools, ingredients, equipment
|
|
6
|
-
- **Skills** provide the recipes: step-by-step instructions to create something valuable
|
|
7
|
-
|
|
8
|
-
Together, they enable users to accomplish complex tasks without figuring out every step.
|
|
9
|
-
|
|
10
|
-
## How They Work Together
|
|
11
|
-
|
|
12
|
-
| MCP (Connectivity) | Skills (Knowledge) |
|
|
13
|
-
|---|---|
|
|
14
|
-
| Connects Claude to services (Notion, Asana, Linear) | Teaches Claude how to use services effectively |
|
|
15
|
-
| Provides real-time data access and tool invocation | Captures workflows and best practices |
|
|
16
|
-
| What Claude *can* do | How Claude *should* do it |
|
|
17
|
-
|
|
18
|
-
## Without Skills (MCP only)
|
|
19
|
-
|
|
20
|
-
- Users connect MCP but don't know what to do next
|
|
21
|
-
- Support tickets: "how do I do X with your integration?"
|
|
22
|
-
- Each conversation starts from scratch
|
|
23
|
-
- Inconsistent results (users prompt differently)
|
|
24
|
-
- Users blame connector when issue is workflow guidance
|
|
25
|
-
|
|
26
|
-
## With Skills (MCP + Skills)
|
|
27
|
-
|
|
28
|
-
- Pre-built workflows activate automatically
|
|
29
|
-
- Consistent, reliable tool usage
|
|
30
|
-
- Best practices embedded in every interaction
|
|
31
|
-
- Lower learning curve for integration
|
|
32
|
-
|
|
33
|
-
## Building MCP-Enhanced Skills
|
|
34
|
-
|
|
35
|
-
### Key Techniques
|
|
36
|
-
|
|
37
|
-
1. **Reference correct MCP tool names** — tool names are case-sensitive
|
|
38
|
-
2. **Include error handling** for common MCP issues (connection refused, auth expired)
|
|
39
|
-
3. **Embed domain expertise** users would otherwise need to specify each time
|
|
40
|
-
4. **Coordinate multiple MCP calls** in sequence with data passing between steps
|
|
41
|
-
5. **Add fallback instructions** when MCP is unavailable
|
|
42
|
-
|
|
43
|
-
### Example: MCP Enhancement Skill Structure
|
|
44
|
-
|
|
45
|
-
```markdown
|
|
46
|
-
## Prerequisites
|
|
47
|
-
- [Service] MCP server must be connected (Settings > Extensions)
|
|
48
|
-
- Valid API key with [specific scopes]
|
|
49
|
-
|
|
50
|
-
## Workflow: [Task Name]
|
|
51
|
-
### Step 1: Fetch Context
|
|
52
|
-
Call `mcp_tool_name` with parameters from user input
|
|
53
|
-
### Step 2: Process
|
|
54
|
-
Apply domain rules to MCP response
|
|
55
|
-
### Step 3: Execute
|
|
56
|
-
Call `mcp_action_tool` with processed data
|
|
57
|
-
### Step 4: Verify
|
|
58
|
-
Confirm action completed, report results
|
|
59
|
-
|
|
60
|
-
## Troubleshooting
|
|
61
|
-
If "Connection refused": verify MCP server running
|
|
62
|
-
If auth error: check API key in Settings > Extensions
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Positioning MCP + Skills
|
|
66
|
-
|
|
67
|
-
**Focus on outcomes:**
|
|
68
|
-
> "The ProjectHub skill enables teams to set up complete project workspaces in seconds — instead of 30 minutes on manual setup."
|
|
69
|
-
|
|
70
|
-
**Not features:**
|
|
71
|
-
> ~~"The ProjectHub skill is a folder containing YAML frontmatter that calls our MCP server tools."~~
|
|
1
|
+
# MCP + Skills Integration
|
|
2
|
+
|
|
3
|
+
## The Kitchen Analogy
|
|
4
|
+
|
|
5
|
+
- **MCP** provides the professional kitchen: access to tools, ingredients, equipment
|
|
6
|
+
- **Skills** provide the recipes: step-by-step instructions to create something valuable
|
|
7
|
+
|
|
8
|
+
Together, they enable users to accomplish complex tasks without figuring out every step.
|
|
9
|
+
|
|
10
|
+
## How They Work Together
|
|
11
|
+
|
|
12
|
+
| MCP (Connectivity) | Skills (Knowledge) |
|
|
13
|
+
|---|---|
|
|
14
|
+
| Connects Claude to services (Notion, Asana, Linear) | Teaches Claude how to use services effectively |
|
|
15
|
+
| Provides real-time data access and tool invocation | Captures workflows and best practices |
|
|
16
|
+
| What Claude *can* do | How Claude *should* do it |
|
|
17
|
+
|
|
18
|
+
## Without Skills (MCP only)
|
|
19
|
+
|
|
20
|
+
- Users connect MCP but don't know what to do next
|
|
21
|
+
- Support tickets: "how do I do X with your integration?"
|
|
22
|
+
- Each conversation starts from scratch
|
|
23
|
+
- Inconsistent results (users prompt differently)
|
|
24
|
+
- Users blame connector when issue is workflow guidance
|
|
25
|
+
|
|
26
|
+
## With Skills (MCP + Skills)
|
|
27
|
+
|
|
28
|
+
- Pre-built workflows activate automatically
|
|
29
|
+
- Consistent, reliable tool usage
|
|
30
|
+
- Best practices embedded in every interaction
|
|
31
|
+
- Lower learning curve for integration
|
|
32
|
+
|
|
33
|
+
## Building MCP-Enhanced Skills
|
|
34
|
+
|
|
35
|
+
### Key Techniques
|
|
36
|
+
|
|
37
|
+
1. **Reference correct MCP tool names** — tool names are case-sensitive
|
|
38
|
+
2. **Include error handling** for common MCP issues (connection refused, auth expired)
|
|
39
|
+
3. **Embed domain expertise** users would otherwise need to specify each time
|
|
40
|
+
4. **Coordinate multiple MCP calls** in sequence with data passing between steps
|
|
41
|
+
5. **Add fallback instructions** when MCP is unavailable
|
|
42
|
+
|
|
43
|
+
### Example: MCP Enhancement Skill Structure
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## Prerequisites
|
|
47
|
+
- [Service] MCP server must be connected (Settings > Extensions)
|
|
48
|
+
- Valid API key with [specific scopes]
|
|
49
|
+
|
|
50
|
+
## Workflow: [Task Name]
|
|
51
|
+
### Step 1: Fetch Context
|
|
52
|
+
Call `mcp_tool_name` with parameters from user input
|
|
53
|
+
### Step 2: Process
|
|
54
|
+
Apply domain rules to MCP response
|
|
55
|
+
### Step 3: Execute
|
|
56
|
+
Call `mcp_action_tool` with processed data
|
|
57
|
+
### Step 4: Verify
|
|
58
|
+
Confirm action completed, report results
|
|
59
|
+
|
|
60
|
+
## Troubleshooting
|
|
61
|
+
If "Connection refused": verify MCP server running
|
|
62
|
+
If auth error: check API key in Settings > Extensions
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Positioning MCP + Skills
|
|
66
|
+
|
|
67
|
+
**Focus on outcomes:**
|
|
68
|
+
> "The ProjectHub skill enables teams to set up complete project workspaces in seconds — instead of 30 minutes on manual setup."
|
|
69
|
+
|
|
70
|
+
**Not features:**
|
|
71
|
+
> ~~"The ProjectHub skill is a folder containing YAML frontmatter that calls our MCP server tools."~~
|
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
# Metadata Quality Criteria
|
|
2
|
-
|
|
3
|
-
Metadata determines when Claude activates the skill. Poor metadata = wrong activation or missed activation.
|
|
4
|
-
|
|
5
|
-
## Name Field
|
|
6
|
-
|
|
7
|
-
**Format:** use either `skill-name` or `namespace:skill-name` (for example `ck:plan`), all lowercase
|
|
8
|
-
|
|
9
|
-
**Good Examples:**
|
|
10
|
-
- `pdf-editor` - clear domain
|
|
11
|
-
- `ck:bigquery-analyst` - namespaced variant
|
|
12
|
-
- `frontend-webapp-builder` - specific function
|
|
13
|
-
|
|
14
|
-
**Bad Examples:**
|
|
15
|
-
- `helper` - too generic
|
|
16
|
-
- `mySkill` - wrong case
|
|
17
|
-
- `pdf` - too short, unclear purpose
|
|
18
|
-
|
|
19
|
-
## Description Field
|
|
20
|
-
|
|
21
|
-
**Constraint:** ≤1024 characters (official max). Shorter is better for token efficiency, but longer descriptions trigger more reliably.
|
|
22
|
-
|
|
23
|
-
**Purpose:** Trigger automatic activation during implementation. Be "pushy" — include specific trigger contexts.
|
|
24
|
-
|
|
25
|
-
### Good Descriptions
|
|
26
|
-
|
|
27
|
-
Specific, action-oriented, includes use cases:
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
description: Build React/TypeScript frontends with modern patterns. Use for components, Suspense, lazy loading, performance optimization.
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
```yaml
|
|
34
|
-
description: Process PDFs with rotation, splitting, merging. Use for document manipulation, page extraction, PDF conversion.
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Bad Descriptions
|
|
38
|
-
|
|
39
|
-
Too generic or educational:
|
|
40
|
-
|
|
41
|
-
```yaml
|
|
42
|
-
description: A skill for working with databases. # Too vague
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
description: This skill helps you understand how React works. # Educational, not actionable
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Trigger Precision
|
|
50
|
-
|
|
51
|
-
Description should answer: "What phrases would a user say that should trigger this skill?"
|
|
52
|
-
|
|
53
|
-
**Example for `image-editor` skill:**
|
|
54
|
-
- "Remove red-eye from this image"
|
|
55
|
-
- "Rotate this photo 90 degrees"
|
|
56
|
-
- "Crop the background out"
|
|
57
|
-
|
|
58
|
-
Include these trigger phrases/actions in description.
|
|
59
|
-
|
|
60
|
-
## Third-Person Style
|
|
61
|
-
|
|
62
|
-
**Correct:** "This skill should be used when..."
|
|
63
|
-
**Wrong:** "Use this skill when..." or "You should use this..."
|
|
64
|
-
|
|
65
|
-
## Validation
|
|
66
|
-
|
|
67
|
-
Check with packaging script:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
scripts/package_skill.py <skill-path>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Fails if:
|
|
74
|
-
- Missing name or description
|
|
75
|
-
- Description exceeds 1024 characters
|
|
76
|
-
- Name exceeds 64 characters
|
|
77
|
-
- Invalid YAML syntax
|
|
78
|
-
|
|
79
|
-
## Pushy Descriptions (Anti-Undertriggering)
|
|
80
|
-
|
|
81
|
-
**Problem:** Generic descriptions cause skills to activate too rarely.
|
|
82
|
-
|
|
83
|
-
```yaml
|
|
84
|
-
# BAD — undertriggers
|
|
85
|
-
description: Data processing skill
|
|
86
|
-
|
|
87
|
-
# GOOD — triggers reliably
|
|
88
|
-
description: Process CSV files and tabular data. Use this skill whenever
|
|
89
|
-
the user uploads data files, mentions datasets, wants to extract info
|
|
90
|
-
from tables, or needs analysis on numbers and records. Make sure to
|
|
91
|
-
use this skill whenever data transformation is needed.
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Include "Use this skill whenever..." and list specific trigger contexts.
|
|
1
|
+
# Metadata Quality Criteria
|
|
2
|
+
|
|
3
|
+
Metadata determines when Claude activates the skill. Poor metadata = wrong activation or missed activation.
|
|
4
|
+
|
|
5
|
+
## Name Field
|
|
6
|
+
|
|
7
|
+
**Format:** use either `skill-name` or `namespace:skill-name` (for example `ck:plan`), all lowercase
|
|
8
|
+
|
|
9
|
+
**Good Examples:**
|
|
10
|
+
- `pdf-editor` - clear domain
|
|
11
|
+
- `ck:bigquery-analyst` - namespaced variant
|
|
12
|
+
- `frontend-webapp-builder` - specific function
|
|
13
|
+
|
|
14
|
+
**Bad Examples:**
|
|
15
|
+
- `helper` - too generic
|
|
16
|
+
- `mySkill` - wrong case
|
|
17
|
+
- `pdf` - too short, unclear purpose
|
|
18
|
+
|
|
19
|
+
## Description Field
|
|
20
|
+
|
|
21
|
+
**Constraint:** ≤1024 characters (official max). Shorter is better for token efficiency, but longer descriptions trigger more reliably.
|
|
22
|
+
|
|
23
|
+
**Purpose:** Trigger automatic activation during implementation. Be "pushy" — include specific trigger contexts.
|
|
24
|
+
|
|
25
|
+
### Good Descriptions
|
|
26
|
+
|
|
27
|
+
Specific, action-oriented, includes use cases:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
description: Build React/TypeScript frontends with modern patterns. Use for components, Suspense, lazy loading, performance optimization.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
description: Process PDFs with rotation, splitting, merging. Use for document manipulation, page extraction, PDF conversion.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Bad Descriptions
|
|
38
|
+
|
|
39
|
+
Too generic or educational:
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
description: A skill for working with databases. # Too vague
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
description: This skill helps you understand how React works. # Educational, not actionable
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Trigger Precision
|
|
50
|
+
|
|
51
|
+
Description should answer: "What phrases would a user say that should trigger this skill?"
|
|
52
|
+
|
|
53
|
+
**Example for `image-editor` skill:**
|
|
54
|
+
- "Remove red-eye from this image"
|
|
55
|
+
- "Rotate this photo 90 degrees"
|
|
56
|
+
- "Crop the background out"
|
|
57
|
+
|
|
58
|
+
Include these trigger phrases/actions in description.
|
|
59
|
+
|
|
60
|
+
## Third-Person Style
|
|
61
|
+
|
|
62
|
+
**Correct:** "This skill should be used when..."
|
|
63
|
+
**Wrong:** "Use this skill when..." or "You should use this..."
|
|
64
|
+
|
|
65
|
+
## Validation
|
|
66
|
+
|
|
67
|
+
Check with packaging script:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
scripts/package_skill.py <skill-path>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Fails if:
|
|
74
|
+
- Missing name or description
|
|
75
|
+
- Description exceeds 1024 characters
|
|
76
|
+
- Name exceeds 64 characters
|
|
77
|
+
- Invalid YAML syntax
|
|
78
|
+
|
|
79
|
+
## Pushy Descriptions (Anti-Undertriggering)
|
|
80
|
+
|
|
81
|
+
**Problem:** Generic descriptions cause skills to activate too rarely.
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
# BAD — undertriggers
|
|
85
|
+
description: Data processing skill
|
|
86
|
+
|
|
87
|
+
# GOOD — triggers reliably
|
|
88
|
+
description: Process CSV files and tabular data. Use this skill whenever
|
|
89
|
+
the user uploads data files, mentions datasets, wants to extract info
|
|
90
|
+
from tables, or needs analysis on numbers and records. Make sure to
|
|
91
|
+
use this skill whenever data transformation is needed.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Include "Use this skill whenever..." and list specific trigger contexts.
|