conectese 0.1.14
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 +265 -0
- package/_conectese/.conectese-version +1 -0
- package/_conectese/config/playwright.config.json +11 -0
- package/_conectese/core/architect.agent.yaml +110 -0
- package/_conectese/core/best-practices/_catalog.yaml +116 -0
- package/_conectese/core/best-practices/blog-post.md +132 -0
- package/_conectese/core/best-practices/blog-seo.md +127 -0
- package/_conectese/core/best-practices/copywriting.md +426 -0
- package/_conectese/core/best-practices/data-analysis.md +401 -0
- package/_conectese/core/best-practices/email-newsletter.md +118 -0
- package/_conectese/core/best-practices/email-sales.md +110 -0
- package/_conectese/core/best-practices/image-design.md +348 -0
- package/_conectese/core/best-practices/instagram-feed.md +235 -0
- package/_conectese/core/best-practices/instagram-reels.md +112 -0
- package/_conectese/core/best-practices/instagram-stories.md +107 -0
- package/_conectese/core/best-practices/linkedin-article.md +116 -0
- package/_conectese/core/best-practices/linkedin-post.md +121 -0
- package/_conectese/core/best-practices/researching.md +349 -0
- package/_conectese/core/best-practices/review.md +269 -0
- package/_conectese/core/best-practices/social-networks-publishing.md +294 -0
- package/_conectese/core/best-practices/strategist.md +344 -0
- package/_conectese/core/best-practices/technical-writing.md +365 -0
- package/_conectese/core/best-practices/twitter-post.md +105 -0
- package/_conectese/core/best-practices/twitter-thread.md +122 -0
- package/_conectese/core/best-practices/whatsapp-broadcast.md +107 -0
- package/_conectese/core/best-practices/youtube-script.md +122 -0
- package/_conectese/core/best-practices/youtube-shorts.md +112 -0
- package/_conectese/core/prompts/build.prompt.md +547 -0
- package/_conectese/core/prompts/design.prompt.md +469 -0
- package/_conectese/core/prompts/discovery.prompt.md +269 -0
- package/_conectese/core/prompts/sherlock-instagram.md +123 -0
- package/_conectese/core/prompts/sherlock-linkedin.md +73 -0
- package/_conectese/core/prompts/sherlock-shared.md +684 -0
- package/_conectese/core/prompts/sherlock-twitter.md +78 -0
- package/_conectese/core/prompts/sherlock-youtube.md +85 -0
- package/_conectese/core/runner.pipeline.md +535 -0
- package/_conectese/core/skills.engine.md +381 -0
- package/agents/data-extractor/AGENT.md +13 -0
- package/agents/direito-adaneiro/AGENT.md +18 -0
- package/agents/direito-administrativo/AGENT.md +18 -0
- package/agents/direito-aeroporta-rio/AGENT.md +18 -0
- package/agents/direito-agra-rio/AGENT.md +18 -0
- package/agents/direito-ambiental/AGENT.md +18 -0
- package/agents/direito-banca-rio/AGENT.md +18 -0
- package/agents/direito-civil/AGENT.md +18 -0
- package/agents/direito-constitcional/AGENT.md +18 -0
- package/agents/direito-da-crianc-a-e-do-adolescente-eca/AGENT.md +18 -0
- package/agents/direito-da-propriedade-intelectal/AGENT.md +18 -0
- package/agents/direito-de-ami-lia/AGENT.md +18 -0
- package/agents/direito-de-tra-nsito/AGENT.md +18 -0
- package/agents/direito-desportivo/AGENT.md +18 -0
- package/agents/direito-digital/AGENT.md +18 -0
- package/agents/direito-do-consmidor/AGENT.md +18 -0
- package/agents/direito-do-trabalho/AGENT.md +18 -0
- package/agents/direito-econo-mico/AGENT.md +18 -0
- package/agents/direito-eleitoral/AGENT.md +18 -0
- package/agents/direito-empresarial/AGENT.md +18 -0
- package/agents/direito-imobilia-rio/AGENT.md +18 -0
- package/agents/direito-inanceiro/AGENT.md +18 -0
- package/agents/direito-internacional/AGENT.md +18 -0
- package/agents/direito-mari-timo/AGENT.md +18 -0
- package/agents/direito-me-dico-e-da-sa-de/AGENT.md +18 -0
- package/agents/direito-militar/AGENT.md +18 -0
- package/agents/direito-ndia-rio/AGENT.md +18 -0
- package/agents/direito-notarial-e-registral/AGENT.md +18 -0
- package/agents/direito-penal/AGENT.md +18 -0
- package/agents/direito-previdencia-rio/AGENT.md +18 -0
- package/agents/direito-processal-civil/AGENT.md +18 -0
- package/agents/direito-processal-do-trabalho/AGENT.md +18 -0
- package/agents/direito-processal-militar/AGENT.md +18 -0
- package/agents/direito-processal-penal/AGENT.md +18 -0
- package/agents/direito-rbani-stico/AGENT.md +18 -0
- package/agents/direito-secrita-rio/AGENT.md +18 -0
- package/agents/direito-sindical/AGENT.md +18 -0
- package/agents/direito-societa-rio/AGENT.md +18 -0
- package/agents/direito-tribta-rio/AGENT.md +18 -0
- package/agents/direitos-hmanos/AGENT.md +18 -0
- package/agents/legal-analyst/AGENT.md +16 -0
- package/agents/legal-synthesizer/AGENT.md +13 -0
- package/agents/lgpd-anonymizer/AGENT.md +14 -0
- package/agents/lgpd-restorer/AGENT.md +14 -0
- package/agents/task-router/AGENT.md +13 -0
- package/bin/conectese.js +73 -0
- package/dashboard/index.html +12 -0
- package/dashboard/package-lock.json +1971 -0
- package/dashboard/package.json +28 -0
- package/dashboard/public/assets/avatars/Female1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female4_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female5_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female5_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female5_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female6_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female6_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female6_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male4_wave.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_up.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_up.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/backpack_blue.png +0 -0
- package/dashboard/public/assets/furniture/backpack_red.png +0 -0
- package/dashboard/public/assets/furniture/blinds.png +0 -0
- package/dashboard/public/assets/furniture/blinds_large_closed_white.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf_purple_tall.png +0 -0
- package/dashboard/public/assets/furniture/bulletin_board.png +0 -0
- package/dashboard/public/assets/furniture/clock.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug_blue.png +0 -0
- package/dashboard/public/assets/furniture/coffee_table.png +0 -0
- package/dashboard/public/assets/furniture/coffeepot_right.png +0 -0
- package/dashboard/public/assets/furniture/coffeetable_black_horizontal.png +0 -0
- package/dashboard/public/assets/furniture/couch.png +0 -0
- package/dashboard/public/assets/furniture/couch_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/cushion_blue.png +0 -0
- package/dashboard/public/assets/furniture/cushion_tan.png +0 -0
- package/dashboard/public/assets/furniture/desk_wood.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug_wide.png +0 -0
- package/dashboard/public/assets/furniture/flowers1.png +0 -0
- package/dashboard/public/assets/furniture/flowers2.png +0 -0
- package/dashboard/public/assets/furniture/lamp_tan.png +0 -0
- package/dashboard/public/assets/furniture/lantern.png +0 -0
- package/dashboard/public/assets/furniture/monstera.png +0 -0
- package/dashboard/public/assets/furniture/monstera_small.png +0 -0
- package/dashboard/public/assets/furniture/picture_frame.png +0 -0
- package/dashboard/public/assets/furniture/plant1.png +0 -0
- package/dashboard/public/assets/furniture/plant2.png +0 -0
- package/dashboard/public/assets/furniture/plant3.png +0 -0
- package/dashboard/public/assets/furniture/plant_poof.png +0 -0
- package/dashboard/public/assets/furniture/plant_spindly.png +0 -0
- package/dashboard/public/assets/furniture/poster_blue.png +0 -0
- package/dashboard/public/assets/furniture/rug.png +0 -0
- package/dashboard/public/assets/furniture/succulent_blue.png +0 -0
- package/dashboard/public/assets/furniture/succulent_green.png +0 -0
- package/dashboard/public/assets/furniture/treasurechest_closed_gold.png +0 -0
- package/dashboard/public/assets/furniture/water_cooler_better.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard_stand_graph.png +0 -0
- package/dashboard/public/assets/furniture/window_blinds_open.png +0 -0
- package/dashboard/src/App.tsx +46 -0
- package/dashboard/src/components/SquadCard.tsx +47 -0
- package/dashboard/src/components/SquadSelector.tsx +61 -0
- package/dashboard/src/components/StatusBadge.tsx +32 -0
- package/dashboard/src/components/StatusBar.tsx +97 -0
- package/dashboard/src/hooks/useSquadSocket.ts +135 -0
- package/dashboard/src/lib/formatTime.ts +16 -0
- package/dashboard/src/lib/normalizeState.ts +25 -0
- package/dashboard/src/main.tsx +10 -0
- package/dashboard/src/office/AgentSprite.ts +241 -0
- package/dashboard/src/office/OfficeScene.ts +153 -0
- package/dashboard/src/office/PhaserGame.tsx +80 -0
- package/dashboard/src/office/RoomBuilder.ts +190 -0
- package/dashboard/src/office/assetKeys.ts +150 -0
- package/dashboard/src/office/palette.ts +32 -0
- package/dashboard/src/plugin/squadWatcher.ts +233 -0
- package/dashboard/src/store/useSquadStore.ts +56 -0
- package/dashboard/src/styles/globals.css +36 -0
- package/dashboard/src/types/state.ts +63 -0
- package/dashboard/src/vite-env.d.ts +1 -0
- package/dashboard/test-results/.last-run.json +4 -0
- package/dashboard/tsconfig.json +24 -0
- package/dashboard/tsconfig.tsbuildinfo +1 -0
- package/dashboard/vite.config.ts +13 -0
- package/package.json +53 -0
- package/skills/README.md +63 -0
- package/skills/apify/SKILL.md +55 -0
- package/skills/blotato/SKILL.md +63 -0
- package/skills/canva/SKILL.md +60 -0
- package/skills/conectese-agent-creator/SKILL.md +192 -0
- package/skills/conectese-skill-creator/SKILL.md +407 -0
- package/skills/conectese-skill-creator/agents/analyzer.md +274 -0
- package/skills/conectese-skill-creator/agents/comparator.md +202 -0
- package/skills/conectese-skill-creator/agents/grader.md +223 -0
- package/skills/conectese-skill-creator/assets/eval_review.html +146 -0
- package/skills/conectese-skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/conectese-skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/conectese-skill-creator/references/schemas.md +430 -0
- package/skills/conectese-skill-creator/references/skill-format.md +235 -0
- package/skills/conectese-skill-creator/scripts/__init__.py +0 -0
- package/skills/conectese-skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/conectese-skill-creator/scripts/quick_validate.py +103 -0
- package/skills/conectese-skill-creator/scripts/run_eval.py +310 -0
- package/skills/conectese-skill-creator/scripts/utils.py +47 -0
- package/skills/image-ai-generator/SKILL.md +124 -0
- package/skills/image-ai-generator/scripts/generate.py +175 -0
- package/skills/image-creator/SKILL.md +155 -0
- package/skills/image-fetcher/SKILL.md +91 -0
- package/skills/instagram-publisher/SKILL.md +119 -0
- package/skills/instagram-publisher/scripts/publish.js +165 -0
- package/skills/resend/SKILL.md +80 -0
- package/skills/template-designer/SKILL.md +201 -0
- package/skills/template-designer/base-templates/model-a.html +27 -0
- package/skills/template-designer/base-templates/model-b.html +31 -0
- package/skills/template-designer/base-templates/model-c.html +42 -0
- package/src/agents-cli.js +158 -0
- package/src/agents.js +134 -0
- package/src/i18n.js +48 -0
- package/src/init.js +341 -0
- package/src/locales/en.json +73 -0
- package/src/locales/es.json +72 -0
- package/src/locales/pt-BR.json +72 -0
- package/src/logger.js +38 -0
- package/src/prompt.js +46 -0
- package/src/readme/README.md +119 -0
- package/src/runs.js +90 -0
- package/src/skills-cli.js +157 -0
- package/src/skills.js +146 -0
- package/src/update.js +169 -0
- package/templates/_conectese/.conectese-version +1 -0
- package/templates/_conectese/_investigations/.gitkeep +0 -0
- package/templates/ide-templates/antigravity/.agent/rules/conectese.md +55 -0
- package/templates/ide-templates/antigravity/.agent/workflows/conectese.md +102 -0
- package/templates/ide-templates/claude-code/.claude/skills/conectese/SKILL.md +182 -0
- package/templates/ide-templates/claude-code/.mcp.json +8 -0
- package/templates/ide-templates/claude-code/CLAUDE.md +43 -0
- package/templates/ide-templates/codex/.agents/skills/conectese/SKILL.md +6 -0
- package/templates/ide-templates/codex/AGENTS.md +105 -0
- package/templates/ide-templates/cursor/.cursor/commands/conectese.md +9 -0
- package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
- package/templates/ide-templates/cursor/.cursor/rules/conectese.mdc +48 -0
- package/templates/ide-templates/cursor/.cursorignore +3 -0
- package/templates/ide-templates/opencode/.opencode/commands/conectese.md +9 -0
- package/templates/ide-templates/opencode/AGENTS.md +105 -0
- package/templates/ide-templates/vscode-copilot/.github/prompts/conectese.prompt.md +201 -0
- package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
- package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
- package/templates/package.json +8 -0
- package/templates/squads/.gitkeep +0 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
# JSON Schemas
|
|
2
|
+
|
|
3
|
+
This document defines the JSON schemas used by skill-creator.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## evals.json
|
|
8
|
+
|
|
9
|
+
Defines the evals for a skill. Located at `evals/evals.json` within the skill directory.
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"skill_name": "example-skill",
|
|
14
|
+
"evals": [
|
|
15
|
+
{
|
|
16
|
+
"id": 1,
|
|
17
|
+
"prompt": "User's example prompt",
|
|
18
|
+
"expected_output": "Description of expected result",
|
|
19
|
+
"files": ["evals/files/sample1.pdf"],
|
|
20
|
+
"expectations": [
|
|
21
|
+
"The output includes X",
|
|
22
|
+
"The skill used script Y"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Fields:**
|
|
30
|
+
- `skill_name`: Name matching the skill's frontmatter
|
|
31
|
+
- `evals[].id`: Unique integer identifier
|
|
32
|
+
- `evals[].prompt`: The task to execute
|
|
33
|
+
- `evals[].expected_output`: Human-readable description of success
|
|
34
|
+
- `evals[].files`: Optional list of input file paths (relative to skill root)
|
|
35
|
+
- `evals[].expectations`: List of verifiable statements
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## history.json
|
|
40
|
+
|
|
41
|
+
Tracks version progression in Improve mode. Located at workspace root.
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"started_at": "2026-01-15T10:30:00Z",
|
|
46
|
+
"skill_name": "pdf",
|
|
47
|
+
"current_best": "v2",
|
|
48
|
+
"iterations": [
|
|
49
|
+
{
|
|
50
|
+
"version": "v0",
|
|
51
|
+
"parent": null,
|
|
52
|
+
"expectation_pass_rate": 0.65,
|
|
53
|
+
"grading_result": "baseline",
|
|
54
|
+
"is_current_best": false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"version": "v1",
|
|
58
|
+
"parent": "v0",
|
|
59
|
+
"expectation_pass_rate": 0.75,
|
|
60
|
+
"grading_result": "won",
|
|
61
|
+
"is_current_best": false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"version": "v2",
|
|
65
|
+
"parent": "v1",
|
|
66
|
+
"expectation_pass_rate": 0.85,
|
|
67
|
+
"grading_result": "won",
|
|
68
|
+
"is_current_best": true
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Fields:**
|
|
75
|
+
- `started_at`: ISO timestamp of when improvement started
|
|
76
|
+
- `skill_name`: Name of the skill being improved
|
|
77
|
+
- `current_best`: Version identifier of the best performer
|
|
78
|
+
- `iterations[].version`: Version identifier (v0, v1, ...)
|
|
79
|
+
- `iterations[].parent`: Parent version this was derived from
|
|
80
|
+
- `iterations[].expectation_pass_rate`: Pass rate from grading
|
|
81
|
+
- `iterations[].grading_result`: "baseline", "won", "lost", or "tie"
|
|
82
|
+
- `iterations[].is_current_best`: Whether this is the current best version
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## grading.json
|
|
87
|
+
|
|
88
|
+
Output from the grader agent. Located at `<run-dir>/grading.json`.
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"expectations": [
|
|
93
|
+
{
|
|
94
|
+
"text": "The output includes the name 'John Smith'",
|
|
95
|
+
"passed": true,
|
|
96
|
+
"evidence": "Found in transcript Step 3: 'Extracted names: John Smith, Sarah Johnson'"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"text": "The spreadsheet has a SUM formula in cell B10",
|
|
100
|
+
"passed": false,
|
|
101
|
+
"evidence": "No spreadsheet was created. The output was a text file."
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"summary": {
|
|
105
|
+
"passed": 2,
|
|
106
|
+
"failed": 1,
|
|
107
|
+
"total": 3,
|
|
108
|
+
"pass_rate": 0.67
|
|
109
|
+
},
|
|
110
|
+
"execution_metrics": {
|
|
111
|
+
"tool_calls": {
|
|
112
|
+
"Read": 5,
|
|
113
|
+
"Write": 2,
|
|
114
|
+
"Bash": 8
|
|
115
|
+
},
|
|
116
|
+
"total_tool_calls": 15,
|
|
117
|
+
"total_steps": 6,
|
|
118
|
+
"errors_encountered": 0,
|
|
119
|
+
"output_chars": 12450,
|
|
120
|
+
"transcript_chars": 3200
|
|
121
|
+
},
|
|
122
|
+
"timing": {
|
|
123
|
+
"executor_duration_seconds": 165.0,
|
|
124
|
+
"grader_duration_seconds": 26.0,
|
|
125
|
+
"total_duration_seconds": 191.0
|
|
126
|
+
},
|
|
127
|
+
"claims": [
|
|
128
|
+
{
|
|
129
|
+
"claim": "The form has 12 fillable fields",
|
|
130
|
+
"type": "factual",
|
|
131
|
+
"verified": true,
|
|
132
|
+
"evidence": "Counted 12 fields in field_info.json"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"user_notes_summary": {
|
|
136
|
+
"uncertainties": ["Used 2023 data, may be stale"],
|
|
137
|
+
"needs_review": [],
|
|
138
|
+
"workarounds": ["Fell back to text overlay for non-fillable fields"]
|
|
139
|
+
},
|
|
140
|
+
"eval_feedback": {
|
|
141
|
+
"suggestions": [
|
|
142
|
+
{
|
|
143
|
+
"assertion": "The output includes the name 'John Smith'",
|
|
144
|
+
"reason": "A hallucinated document that mentions the name would also pass"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"overall": "Assertions check presence but not correctness."
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Fields:**
|
|
153
|
+
- `expectations[]`: Graded expectations with evidence
|
|
154
|
+
- `summary`: Aggregate pass/fail counts
|
|
155
|
+
- `execution_metrics`: Tool usage and output size (from executor's metrics.json)
|
|
156
|
+
- `timing`: Wall clock timing (from timing.json)
|
|
157
|
+
- `claims`: Extracted and verified claims from the output
|
|
158
|
+
- `user_notes_summary`: Issues flagged by the executor
|
|
159
|
+
- `eval_feedback`: (optional) Improvement suggestions for the evals, only present when the grader identifies issues worth raising
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## metrics.json
|
|
164
|
+
|
|
165
|
+
Output from the executor agent. Located at `<run-dir>/outputs/metrics.json`.
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"tool_calls": {
|
|
170
|
+
"Read": 5,
|
|
171
|
+
"Write": 2,
|
|
172
|
+
"Bash": 8,
|
|
173
|
+
"Edit": 1,
|
|
174
|
+
"Glob": 2,
|
|
175
|
+
"Grep": 0
|
|
176
|
+
},
|
|
177
|
+
"total_tool_calls": 18,
|
|
178
|
+
"total_steps": 6,
|
|
179
|
+
"files_created": ["filled_form.pdf", "field_values.json"],
|
|
180
|
+
"errors_encountered": 0,
|
|
181
|
+
"output_chars": 12450,
|
|
182
|
+
"transcript_chars": 3200
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Fields:**
|
|
187
|
+
- `tool_calls`: Count per tool type
|
|
188
|
+
- `total_tool_calls`: Sum of all tool calls
|
|
189
|
+
- `total_steps`: Number of major execution steps
|
|
190
|
+
- `files_created`: List of output files created
|
|
191
|
+
- `errors_encountered`: Number of errors during execution
|
|
192
|
+
- `output_chars`: Total character count of output files
|
|
193
|
+
- `transcript_chars`: Character count of transcript
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## timing.json
|
|
198
|
+
|
|
199
|
+
Wall clock timing for a run. Located at `<run-dir>/timing.json`.
|
|
200
|
+
|
|
201
|
+
**How to capture:** When a subagent task completes, the task notification includes `total_tokens` and `duration_ms`. Save these immediately — they are not persisted anywhere else and cannot be recovered after the fact.
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"total_tokens": 84852,
|
|
206
|
+
"duration_ms": 23332,
|
|
207
|
+
"total_duration_seconds": 23.3,
|
|
208
|
+
"executor_start": "2026-01-15T10:30:00Z",
|
|
209
|
+
"executor_end": "2026-01-15T10:32:45Z",
|
|
210
|
+
"executor_duration_seconds": 165.0,
|
|
211
|
+
"grader_start": "2026-01-15T10:32:46Z",
|
|
212
|
+
"grader_end": "2026-01-15T10:33:12Z",
|
|
213
|
+
"grader_duration_seconds": 26.0
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## benchmark.json
|
|
220
|
+
|
|
221
|
+
Output from Benchmark mode. Located at `benchmarks/<timestamp>/benchmark.json`.
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"metadata": {
|
|
226
|
+
"skill_name": "pdf",
|
|
227
|
+
"skill_path": "/path/to/pdf",
|
|
228
|
+
"executor_model": "claude-sonnet-4-20250514",
|
|
229
|
+
"analyzer_model": "most-capable-model",
|
|
230
|
+
"timestamp": "2026-01-15T10:30:00Z",
|
|
231
|
+
"evals_run": [1, 2, 3],
|
|
232
|
+
"runs_per_configuration": 3
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
"runs": [
|
|
236
|
+
{
|
|
237
|
+
"eval_id": 1,
|
|
238
|
+
"eval_name": "Ocean",
|
|
239
|
+
"configuration": "with_skill",
|
|
240
|
+
"run_number": 1,
|
|
241
|
+
"result": {
|
|
242
|
+
"pass_rate": 0.85,
|
|
243
|
+
"passed": 6,
|
|
244
|
+
"failed": 1,
|
|
245
|
+
"total": 7,
|
|
246
|
+
"time_seconds": 42.5,
|
|
247
|
+
"tokens": 3800,
|
|
248
|
+
"tool_calls": 18,
|
|
249
|
+
"errors": 0
|
|
250
|
+
},
|
|
251
|
+
"expectations": [
|
|
252
|
+
{"text": "...", "passed": true, "evidence": "..."}
|
|
253
|
+
],
|
|
254
|
+
"notes": [
|
|
255
|
+
"Used 2023 data, may be stale",
|
|
256
|
+
"Fell back to text overlay for non-fillable fields"
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
],
|
|
260
|
+
|
|
261
|
+
"run_summary": {
|
|
262
|
+
"with_skill": {
|
|
263
|
+
"pass_rate": {"mean": 0.85, "stddev": 0.05, "min": 0.80, "max": 0.90},
|
|
264
|
+
"time_seconds": {"mean": 45.0, "stddev": 12.0, "min": 32.0, "max": 58.0},
|
|
265
|
+
"tokens": {"mean": 3800, "stddev": 400, "min": 3200, "max": 4100}
|
|
266
|
+
},
|
|
267
|
+
"without_skill": {
|
|
268
|
+
"pass_rate": {"mean": 0.35, "stddev": 0.08, "min": 0.28, "max": 0.45},
|
|
269
|
+
"time_seconds": {"mean": 32.0, "stddev": 8.0, "min": 24.0, "max": 42.0},
|
|
270
|
+
"tokens": {"mean": 2100, "stddev": 300, "min": 1800, "max": 2500}
|
|
271
|
+
},
|
|
272
|
+
"delta": {
|
|
273
|
+
"pass_rate": "+0.50",
|
|
274
|
+
"time_seconds": "+13.0",
|
|
275
|
+
"tokens": "+1700"
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
"notes": [
|
|
280
|
+
"Assertion 'Output is a PDF file' passes 100% in both configurations - may not differentiate skill value",
|
|
281
|
+
"Eval 3 shows high variance (50% ± 40%) - may be flaky or model-dependent",
|
|
282
|
+
"Without-skill runs consistently fail on table extraction expectations",
|
|
283
|
+
"Skill adds 13s average execution time but improves pass rate by 50%"
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Fields:**
|
|
289
|
+
- `metadata`: Information about the benchmark run
|
|
290
|
+
- `skill_name`: Name of the skill
|
|
291
|
+
- `timestamp`: When the benchmark was run
|
|
292
|
+
- `evals_run`: List of eval names or IDs
|
|
293
|
+
- `runs_per_configuration`: Number of runs per config (e.g. 3)
|
|
294
|
+
- `runs[]`: Individual run results
|
|
295
|
+
- `eval_id`: Numeric eval identifier
|
|
296
|
+
- `eval_name`: Human-readable eval name (used as section header in the viewer)
|
|
297
|
+
- `configuration`: Must be `"with_skill"` or `"without_skill"` (the viewer uses this exact string for grouping and color coding)
|
|
298
|
+
- `run_number`: Integer run number (1, 2, 3...)
|
|
299
|
+
- `result`: Nested object with `pass_rate`, `passed`, `total`, `time_seconds`, `tokens`, `errors`
|
|
300
|
+
- `run_summary`: Statistical aggregates per configuration
|
|
301
|
+
- `with_skill` / `without_skill`: Each contains `pass_rate`, `time_seconds`, `tokens` objects with `mean` and `stddev` fields
|
|
302
|
+
- `delta`: Difference strings like `"+0.50"`, `"+13.0"`, `"+1700"`
|
|
303
|
+
- `notes`: Freeform observations from the analyzer
|
|
304
|
+
|
|
305
|
+
**Important:** The viewer reads these field names exactly. Using `config` instead of `configuration`, or putting `pass_rate` at the top level of a run instead of nested under `result`, will cause the viewer to show empty/zero values. Always reference this schema when generating benchmark.json manually.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## comparison.json
|
|
310
|
+
|
|
311
|
+
Output from blind comparator. Located at `<grading-dir>/comparison-N.json`.
|
|
312
|
+
|
|
313
|
+
```json
|
|
314
|
+
{
|
|
315
|
+
"winner": "A",
|
|
316
|
+
"reasoning": "Output A provides a complete solution with proper formatting and all required fields. Output B is missing the date field and has formatting inconsistencies.",
|
|
317
|
+
"rubric": {
|
|
318
|
+
"A": {
|
|
319
|
+
"content": {
|
|
320
|
+
"correctness": 5,
|
|
321
|
+
"completeness": 5,
|
|
322
|
+
"accuracy": 4
|
|
323
|
+
},
|
|
324
|
+
"structure": {
|
|
325
|
+
"organization": 4,
|
|
326
|
+
"formatting": 5,
|
|
327
|
+
"usability": 4
|
|
328
|
+
},
|
|
329
|
+
"content_score": 4.7,
|
|
330
|
+
"structure_score": 4.3,
|
|
331
|
+
"overall_score": 9.0
|
|
332
|
+
},
|
|
333
|
+
"B": {
|
|
334
|
+
"content": {
|
|
335
|
+
"correctness": 3,
|
|
336
|
+
"completeness": 2,
|
|
337
|
+
"accuracy": 3
|
|
338
|
+
},
|
|
339
|
+
"structure": {
|
|
340
|
+
"organization": 3,
|
|
341
|
+
"formatting": 2,
|
|
342
|
+
"usability": 3
|
|
343
|
+
},
|
|
344
|
+
"content_score": 2.7,
|
|
345
|
+
"structure_score": 2.7,
|
|
346
|
+
"overall_score": 5.4
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
"output_quality": {
|
|
350
|
+
"A": {
|
|
351
|
+
"score": 9,
|
|
352
|
+
"strengths": ["Complete solution", "Well-formatted", "All fields present"],
|
|
353
|
+
"weaknesses": ["Minor style inconsistency in header"]
|
|
354
|
+
},
|
|
355
|
+
"B": {
|
|
356
|
+
"score": 5,
|
|
357
|
+
"strengths": ["Readable output", "Correct basic structure"],
|
|
358
|
+
"weaknesses": ["Missing date field", "Formatting inconsistencies", "Partial data extraction"]
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
"expectation_results": {
|
|
362
|
+
"A": {
|
|
363
|
+
"passed": 4,
|
|
364
|
+
"total": 5,
|
|
365
|
+
"pass_rate": 0.80,
|
|
366
|
+
"details": [
|
|
367
|
+
{"text": "Output includes name", "passed": true}
|
|
368
|
+
]
|
|
369
|
+
},
|
|
370
|
+
"B": {
|
|
371
|
+
"passed": 3,
|
|
372
|
+
"total": 5,
|
|
373
|
+
"pass_rate": 0.60,
|
|
374
|
+
"details": [
|
|
375
|
+
{"text": "Output includes name", "passed": true}
|
|
376
|
+
]
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## analysis.json
|
|
385
|
+
|
|
386
|
+
Output from post-hoc analyzer. Located at `<grading-dir>/analysis.json`.
|
|
387
|
+
|
|
388
|
+
```json
|
|
389
|
+
{
|
|
390
|
+
"comparison_summary": {
|
|
391
|
+
"winner": "A",
|
|
392
|
+
"winner_skill": "path/to/winner/skill",
|
|
393
|
+
"loser_skill": "path/to/loser/skill",
|
|
394
|
+
"comparator_reasoning": "Brief summary of why comparator chose winner"
|
|
395
|
+
},
|
|
396
|
+
"winner_strengths": [
|
|
397
|
+
"Clear step-by-step instructions for handling multi-page documents",
|
|
398
|
+
"Included validation script that caught formatting errors"
|
|
399
|
+
],
|
|
400
|
+
"loser_weaknesses": [
|
|
401
|
+
"Vague instruction 'process the document appropriately' led to inconsistent behavior",
|
|
402
|
+
"No script for validation, agent had to improvise"
|
|
403
|
+
],
|
|
404
|
+
"instruction_following": {
|
|
405
|
+
"winner": {
|
|
406
|
+
"score": 9,
|
|
407
|
+
"issues": ["Minor: skipped optional logging step"]
|
|
408
|
+
},
|
|
409
|
+
"loser": {
|
|
410
|
+
"score": 6,
|
|
411
|
+
"issues": [
|
|
412
|
+
"Did not use the skill's formatting template",
|
|
413
|
+
"Invented own approach instead of following step 3"
|
|
414
|
+
]
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"improvement_suggestions": [
|
|
418
|
+
{
|
|
419
|
+
"priority": "high",
|
|
420
|
+
"category": "instructions",
|
|
421
|
+
"suggestion": "Replace 'process the document appropriately' with explicit steps",
|
|
422
|
+
"expected_impact": "Would eliminate ambiguity that caused inconsistent behavior"
|
|
423
|
+
}
|
|
424
|
+
],
|
|
425
|
+
"transcript_insights": {
|
|
426
|
+
"winner_execution_pattern": "Read skill -> Followed 5-step process -> Used validation script",
|
|
427
|
+
"loser_execution_pattern": "Read skill -> Unclear on approach -> Tried 3 different methods"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Conectese Skill Format Reference
|
|
2
|
+
|
|
3
|
+
## SKILL.md Structure
|
|
4
|
+
|
|
5
|
+
Every Conectese skill consists of a `SKILL.md` file with YAML frontmatter and a Markdown body.
|
|
6
|
+
|
|
7
|
+
### Common Frontmatter Fields (all types)
|
|
8
|
+
|
|
9
|
+
| Field | Required | Description |
|
|
10
|
+
|-------|----------|-------------|
|
|
11
|
+
| `name` | Yes | Skill identifier (lowercase, hyphenated) |
|
|
12
|
+
| `description` | Yes | What the skill does and when to use it |
|
|
13
|
+
| `type` | Yes | `mcp`, `script`, `hybrid`, or `prompt` |
|
|
14
|
+
| `version` | Yes | Semver version string (e.g., `1.0.0`) |
|
|
15
|
+
| `categories` | No | Classification tags array (e.g., `["social-media", "content"]`) |
|
|
16
|
+
| `env` | No | Required environment variable names array |
|
|
17
|
+
|
|
18
|
+
### Type: mcp
|
|
19
|
+
|
|
20
|
+
MCP skills connect to external APIs via Model Context Protocol servers.
|
|
21
|
+
|
|
22
|
+
Additional fields under `mcp:`:
|
|
23
|
+
|
|
24
|
+
| Field | Required | Description |
|
|
25
|
+
|-------|----------|-------------|
|
|
26
|
+
| `server_name` | Yes | Key used in MCP config |
|
|
27
|
+
| `command` | Yes (stdio) | Command to run the server |
|
|
28
|
+
| `args` | Yes (stdio) | Command arguments array |
|
|
29
|
+
| `transport` | Yes | `stdio` or `http` |
|
|
30
|
+
| `url` | Yes (http) | Server URL for HTTP transport |
|
|
31
|
+
| `headers` | No | Auth headers mapping (key-value pairs) |
|
|
32
|
+
|
|
33
|
+
### Type: script
|
|
34
|
+
|
|
35
|
+
Script skills run custom code via a specific runtime.
|
|
36
|
+
|
|
37
|
+
Additional fields under `script:`:
|
|
38
|
+
|
|
39
|
+
| Field | Required | Description |
|
|
40
|
+
|-------|----------|-------------|
|
|
41
|
+
| `path` | Yes | Script path relative to skill directory |
|
|
42
|
+
| `runtime` | Yes | `node`, `python`, or `bash` |
|
|
43
|
+
| `dependencies` | No | Package list to install before running |
|
|
44
|
+
| `invoke` | Yes | Full invocation command template |
|
|
45
|
+
|
|
46
|
+
### Type: hybrid
|
|
47
|
+
|
|
48
|
+
Hybrid skills combine both MCP and script components. Include both `mcp:` and `script:` sections as defined above.
|
|
49
|
+
|
|
50
|
+
### Type: prompt
|
|
51
|
+
|
|
52
|
+
Prompt skills are pure behavioral instructions for agents with no external integration. No additional fields beyond the common fields are required — the Markdown body is the entire skill.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Markdown Body
|
|
57
|
+
|
|
58
|
+
The body contains instructions for agents. Recommended sections:
|
|
59
|
+
|
|
60
|
+
- `## When to use` — describes when agents should activate this skill
|
|
61
|
+
- `## Instructions` — step-by-step usage guide
|
|
62
|
+
- `## Available operations` — what the skill can do (especially for MCP/script types)
|
|
63
|
+
- `## Examples` — input/output examples to guide agent behavior
|
|
64
|
+
- `## Error handling` — what to do when things go wrong
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Complete Examples
|
|
69
|
+
|
|
70
|
+
### Example: MCP Skill (Canva Integration)
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
---
|
|
74
|
+
name: canva-design
|
|
75
|
+
description: Create and manage Canva designs. Use when users want to generate social media graphics, presentations, or any visual content via Canva.
|
|
76
|
+
type: mcp
|
|
77
|
+
version: 1.0.0
|
|
78
|
+
categories:
|
|
79
|
+
- design
|
|
80
|
+
- social-media
|
|
81
|
+
env:
|
|
82
|
+
- CANVA_API_KEY
|
|
83
|
+
mcp:
|
|
84
|
+
server_name: canva
|
|
85
|
+
command: npx
|
|
86
|
+
args: ["-y", "@anthropic/canva-mcp-server"]
|
|
87
|
+
transport: stdio
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
# Canva Design Skill
|
|
91
|
+
|
|
92
|
+
## When to use
|
|
93
|
+
|
|
94
|
+
Use this skill when the user or squad pipeline needs to create visual content — social media posts, presentations, flyers, or any graphic design task that benefits from Canva's template library.
|
|
95
|
+
|
|
96
|
+
## Instructions
|
|
97
|
+
|
|
98
|
+
1. Start by understanding the design requirements (type, dimensions, brand colors)
|
|
99
|
+
2. Search for relevant templates using `search-brand-templates`
|
|
100
|
+
3. Generate the design with `generate-design`
|
|
101
|
+
4. Present candidates to the user for selection
|
|
102
|
+
5. Export in the requested format
|
|
103
|
+
|
|
104
|
+
## Available operations
|
|
105
|
+
|
|
106
|
+
- Search templates and designs
|
|
107
|
+
- Generate new designs from prompts
|
|
108
|
+
- Edit existing designs (text, images, layout)
|
|
109
|
+
- Export to PDF, PNG, JPG, PPTX
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Example: Script Skill (Data Processor)
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
---
|
|
116
|
+
name: csv-analyzer
|
|
117
|
+
description: Analyze CSV files and generate summary reports. Use when users need data analysis, column statistics, or trend detection from CSV/spreadsheet data.
|
|
118
|
+
type: script
|
|
119
|
+
version: 1.0.0
|
|
120
|
+
categories:
|
|
121
|
+
- data
|
|
122
|
+
- analytics
|
|
123
|
+
script:
|
|
124
|
+
path: scripts/analyze.py
|
|
125
|
+
runtime: python
|
|
126
|
+
dependencies:
|
|
127
|
+
- pandas
|
|
128
|
+
- matplotlib
|
|
129
|
+
invoke: python scripts/analyze.py --input {input_file} --output {output_dir}
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
# CSV Analyzer Skill
|
|
133
|
+
|
|
134
|
+
## When to use
|
|
135
|
+
|
|
136
|
+
Use this skill when the pipeline needs to analyze tabular data from CSV files — generating summaries, detecting trends, computing statistics, or creating visualizations.
|
|
137
|
+
|
|
138
|
+
## Instructions
|
|
139
|
+
|
|
140
|
+
1. Read the input CSV file to understand its structure
|
|
141
|
+
2. Run the analysis script: `python scripts/analyze.py --input <file> --output <dir>`
|
|
142
|
+
3. Review the generated report in the output directory
|
|
143
|
+
4. Present findings to the user with key insights highlighted
|
|
144
|
+
|
|
145
|
+
## Available operations
|
|
146
|
+
|
|
147
|
+
- Column statistics (mean, median, mode, std dev)
|
|
148
|
+
- Trend detection across time-series columns
|
|
149
|
+
- Correlation analysis between numeric columns
|
|
150
|
+
- Chart generation (bar, line, scatter)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Example: Prompt Skill (Tone of Voice)
|
|
154
|
+
|
|
155
|
+
```yaml
|
|
156
|
+
---
|
|
157
|
+
name: professional-tone
|
|
158
|
+
description: Write content in a professional corporate tone. Use when squad agents need to produce business communications, reports, or client-facing materials that require formal, polished language.
|
|
159
|
+
type: prompt
|
|
160
|
+
version: 1.0.0
|
|
161
|
+
categories:
|
|
162
|
+
- writing
|
|
163
|
+
- tone
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
# Professional Tone Skill
|
|
167
|
+
|
|
168
|
+
## When to use
|
|
169
|
+
|
|
170
|
+
Apply this skill whenever generating content that will be seen by clients, executives, or external stakeholders. This includes emails, reports, proposals, and presentation scripts.
|
|
171
|
+
|
|
172
|
+
## Instructions
|
|
173
|
+
|
|
174
|
+
When writing in professional tone:
|
|
175
|
+
|
|
176
|
+
1. Use formal but accessible language — avoid jargon unless the audience expects it
|
|
177
|
+
2. Lead with the conclusion or recommendation, then support with evidence
|
|
178
|
+
3. Keep sentences concise (aim for 15-20 words average)
|
|
179
|
+
4. Use active voice by default; passive voice only when the actor is unknown or irrelevant
|
|
180
|
+
5. Structure content with clear headings and bullet points for scannability
|
|
181
|
+
|
|
182
|
+
## Examples
|
|
183
|
+
|
|
184
|
+
**Input:** "Hey, just wanted to let you know the project is running behind. We messed up the timeline."
|
|
185
|
+
|
|
186
|
+
**Output:** "I'm writing to provide an update on the project timeline. Due to unforeseen complexity in the integration phase, we are currently tracking two weeks behind our original schedule. I've prepared a revised timeline and mitigation plan for your review."
|
|
187
|
+
|
|
188
|
+
## Avoid
|
|
189
|
+
|
|
190
|
+
- Casual language ("gonna", "kinda", "hey")
|
|
191
|
+
- Hedging without substance ("I think maybe we could possibly...")
|
|
192
|
+
- Exclamation marks in formal contexts
|
|
193
|
+
- Emojis in any client-facing content
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Example: Hybrid Skill (Social Media Publisher)
|
|
197
|
+
|
|
198
|
+
```yaml
|
|
199
|
+
---
|
|
200
|
+
name: social-publisher
|
|
201
|
+
description: Draft social media content and publish via API. Use when squads need to create and post content to Instagram, Twitter/X, or LinkedIn with approval workflows.
|
|
202
|
+
type: hybrid
|
|
203
|
+
version: 1.0.0
|
|
204
|
+
categories:
|
|
205
|
+
- social-media
|
|
206
|
+
- publishing
|
|
207
|
+
env:
|
|
208
|
+
- SOCIAL_API_KEY
|
|
209
|
+
mcp:
|
|
210
|
+
server_name: social-api
|
|
211
|
+
command: npx
|
|
212
|
+
args: ["-y", "@company/social-mcp"]
|
|
213
|
+
transport: stdio
|
|
214
|
+
script:
|
|
215
|
+
path: scripts/format_post.py
|
|
216
|
+
runtime: python
|
|
217
|
+
dependencies:
|
|
218
|
+
- pillow
|
|
219
|
+
invoke: python scripts/format_post.py --platform {platform} --input {draft_file}
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
# Social Media Publisher
|
|
223
|
+
|
|
224
|
+
## When to use
|
|
225
|
+
|
|
226
|
+
Use this skill when the pipeline needs to both create and publish social media content. The script handles formatting and image processing, while the MCP server handles the actual publishing API calls.
|
|
227
|
+
|
|
228
|
+
## Instructions
|
|
229
|
+
|
|
230
|
+
1. Draft the content using squad agent context (topic, tone, audience)
|
|
231
|
+
2. Run the formatting script to prepare platform-specific versions
|
|
232
|
+
3. Present drafts for user approval at the checkpoint
|
|
233
|
+
4. After approval, use the MCP server to publish to the target platforms
|
|
234
|
+
5. Log the published URLs in the output directory
|
|
235
|
+
```
|
|
File without changes
|