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,36 @@
|
|
|
1
|
+
*,
|
|
2
|
+
*::before,
|
|
3
|
+
*::after {
|
|
4
|
+
margin: 0;
|
|
5
|
+
padding: 0;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
--bg-primary: #101018;
|
|
11
|
+
--bg-secondary: #1a1a2e;
|
|
12
|
+
--bg-sidebar: #141422;
|
|
13
|
+
--border: #2a2a3e;
|
|
14
|
+
--text-primary: #e0e0e0;
|
|
15
|
+
--text-secondary: #8888a0;
|
|
16
|
+
--accent-cyan: #00d4ff;
|
|
17
|
+
--accent-green: #00e676;
|
|
18
|
+
--accent-amber: #ffab00;
|
|
19
|
+
--accent-red: #ff5252;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
html,
|
|
23
|
+
body,
|
|
24
|
+
#root {
|
|
25
|
+
height: 100%;
|
|
26
|
+
width: 100%;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
font-family: "JetBrains Mono", "Fira Code", monospace;
|
|
29
|
+
background: var(--bg-primary);
|
|
30
|
+
color: var(--text-primary);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@keyframes pulse {
|
|
34
|
+
0%, 100% { opacity: 1; }
|
|
35
|
+
50% { opacity: 0.4; }
|
|
36
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// state.json structure — matches Pipeline Runner output
|
|
2
|
+
export interface AgentDesk {
|
|
3
|
+
col: number;
|
|
4
|
+
row: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type AgentStatus =
|
|
8
|
+
| "idle"
|
|
9
|
+
| "working"
|
|
10
|
+
| "delivering"
|
|
11
|
+
| "done"
|
|
12
|
+
| "checkpoint";
|
|
13
|
+
|
|
14
|
+
export interface Agent {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
icon: string;
|
|
18
|
+
status: AgentStatus;
|
|
19
|
+
gender?: "male" | "female";
|
|
20
|
+
desk: AgentDesk;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface Handoff {
|
|
24
|
+
from: string;
|
|
25
|
+
to: string;
|
|
26
|
+
message: string;
|
|
27
|
+
completedAt: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export type SquadStatus =
|
|
31
|
+
| "idle"
|
|
32
|
+
| "running"
|
|
33
|
+
| "completed"
|
|
34
|
+
| "checkpoint";
|
|
35
|
+
|
|
36
|
+
export interface SquadState {
|
|
37
|
+
squad: string;
|
|
38
|
+
status: SquadStatus;
|
|
39
|
+
step: {
|
|
40
|
+
current: number;
|
|
41
|
+
total: number;
|
|
42
|
+
label: string;
|
|
43
|
+
};
|
|
44
|
+
agents: Agent[];
|
|
45
|
+
handoff: Handoff | null;
|
|
46
|
+
startedAt: string | null;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Squad metadata from squad.yaml
|
|
51
|
+
export interface SquadInfo {
|
|
52
|
+
code: string;
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
icon: string;
|
|
56
|
+
agents: string[]; // agent file paths
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// WebSocket messages
|
|
60
|
+
export type WsMessage =
|
|
61
|
+
| { type: "SNAPSHOT"; squads: SquadInfo[]; activeStates: Record<string, SquadState> }
|
|
62
|
+
| { type: "SQUAD_UPDATE"; squad: string; state: SquadState }
|
|
63
|
+
| { type: "SQUAD_INACTIVE"; squad: string };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"moduleResolution": "bundler",
|
|
9
|
+
"allowImportingTsExtensions": true,
|
|
10
|
+
"isolatedModules": true,
|
|
11
|
+
"moduleDetection": "force",
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"jsx": "react-jsx",
|
|
14
|
+
"strict": true,
|
|
15
|
+
"noUnusedLocals": true,
|
|
16
|
+
"noUnusedParameters": true,
|
|
17
|
+
"noFallthroughCasesInSwitch": true,
|
|
18
|
+
"noUncheckedSideEffectImports": true,
|
|
19
|
+
"paths": {
|
|
20
|
+
"@/*": ["./src/*"]
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"include": ["src"]
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/squadcard.tsx","./src/components/squadselector.tsx","./src/components/statusbadge.tsx","./src/components/statusbar.tsx","./src/hooks/usesquadsocket.ts","./src/lib/formattime.ts","./src/lib/normalizestate.ts","./src/office/agentsprite.ts","./src/office/officescene.ts","./src/office/phasergame.tsx","./src/office/roombuilder.ts","./src/office/assetkeys.ts","./src/office/palette.ts","./src/plugin/squadwatcher.ts","./src/store/usesquadstore.ts","./src/types/state.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from "vite";
|
|
2
|
+
import react from "@vitejs/plugin-react";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { squadWatcherPlugin } from "./src/plugin/squadWatcher";
|
|
5
|
+
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
plugins: [react(), squadWatcherPlugin()],
|
|
8
|
+
resolve: {
|
|
9
|
+
alias: {
|
|
10
|
+
"@": path.resolve(__dirname, "./src"),
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "conectese",
|
|
3
|
+
"version": "0.1.14",
|
|
4
|
+
"description": "Multi-agent orchestration framework — create AI squads that work together",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"conectese": "bin/conectese.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node --test tests/*.test.js",
|
|
11
|
+
"lint": "eslint src/ bin/ tests/",
|
|
12
|
+
"version": "node -e \"require('fs').writeFileSync('templates/_conectese/.conectese-version', require('./package.json').version + '\\n')\" && git add templates/_conectese/.conectese-version"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"claude-code",
|
|
16
|
+
"ai-agents",
|
|
17
|
+
"multi-agent",
|
|
18
|
+
"orchestration",
|
|
19
|
+
"squads"
|
|
20
|
+
],
|
|
21
|
+
"author": "Renato Asse (https://github.com/renatoasse)",
|
|
22
|
+
"homepage": "https://github.com/renatoasse/conectese#readme",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/renatoasse/conectese.git"
|
|
26
|
+
},
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/renatoasse/conectese/issues"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20.0.0"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"bin/",
|
|
36
|
+
"src/",
|
|
37
|
+
"agents/",
|
|
38
|
+
"skills/",
|
|
39
|
+
"templates/",
|
|
40
|
+
"_conectese/",
|
|
41
|
+
"dashboard/"
|
|
42
|
+
],
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@inquirer/checkbox": "^5.1.0",
|
|
45
|
+
"@inquirer/input": "^5.0.0",
|
|
46
|
+
"@inquirer/select": "^5.1.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@eslint/js": "^10.0.1",
|
|
50
|
+
"eslint": "^10.0.3",
|
|
51
|
+
"globals": "^17.4.0"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Conectese Skill Catalog
|
|
2
|
+
|
|
3
|
+
Browse available skills for your squads. Install any skill with:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx conectese install <skill-name>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Available Skills
|
|
10
|
+
|
|
11
|
+
| Skill | Type | Description | Env Vars | Install |
|
|
12
|
+
|-------|------|-------------|----------|---------|
|
|
13
|
+
| [apify](./apify/) | mcp | Web scraping and automation platform. Extract data from any website using pre-built Actors. | `APIFY_TOKEN` | `npx conectese install apify` |
|
|
14
|
+
| [canva](./canva/) | mcp | Create, search, autofill, and export designs from Canva. | _(none -- OAuth)_ | `npx conectese install canva` |
|
|
15
|
+
| [instagram-publisher](./instagram-publisher/) | script | Publish Instagram carousel posts from local JPEG images via the Graph API. | `INSTAGRAM_ACCESS_TOKEN`, `INSTAGRAM_USER_ID` | `npx conectese install instagram-publisher` |
|
|
16
|
+
| [blotato](./blotato/) | mcp | Publish and schedule posts across Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. | `BLOTATO_API_KEY` | `npx conectese install blotato` |
|
|
17
|
+
| [resend](./resend/) | mcp | Send emails through Resend — single send, batch, scheduling, attachments, and contact management. | `RESEND_API_KEY` | `npx conectese install resend` |
|
|
18
|
+
| [image-fetcher](./image-fetcher/) | hybrid | Acquire visual assets via web search, live screenshots (Playwright), and user-provided files. | _(none)_ | `npx conectese install image-fetcher` |
|
|
19
|
+
| [image-creator](./image-creator/) | mcp | Render HTML/CSS into production-ready PNG images via Playwright. | _(none)_ | `npx conectese install image-creator` |
|
|
20
|
+
| [image-ai-generator](./image-ai-generator/) | script | Generate AI images via Openrouter API. Test mode (cheap) and production mode (high-quality). Supports reference images for brand consistency. | `OPENROUTER_API_KEY` | `npx conectese install image-ai-generator` |
|
|
21
|
+
|
|
22
|
+
## Skill Types
|
|
23
|
+
|
|
24
|
+
- **mcp** -- Connects to an external MCP server (stdio or HTTP transport)
|
|
25
|
+
- **script** -- Runs a local script (Node.js, Python, etc.)
|
|
26
|
+
- **hybrid** -- Combines MCP server access with local script capabilities
|
|
27
|
+
|
|
28
|
+
## Directory Structure
|
|
29
|
+
|
|
30
|
+
Each skill lives in its own folder with a `SKILL.md` file:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
skills/
|
|
34
|
+
apify/
|
|
35
|
+
SKILL.md
|
|
36
|
+
canva/
|
|
37
|
+
SKILL.md
|
|
38
|
+
instagram-publisher/
|
|
39
|
+
SKILL.md
|
|
40
|
+
scripts/
|
|
41
|
+
publish.js
|
|
42
|
+
blotato/
|
|
43
|
+
SKILL.md
|
|
44
|
+
resend/
|
|
45
|
+
SKILL.md
|
|
46
|
+
image-fetcher/
|
|
47
|
+
SKILL.md
|
|
48
|
+
image-creator/
|
|
49
|
+
SKILL.md
|
|
50
|
+
image-ai-generator/
|
|
51
|
+
SKILL.md
|
|
52
|
+
scripts/
|
|
53
|
+
generate.py
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The `SKILL.md` file contains YAML frontmatter (name, type, version, MCP/script config, env vars, categories) and a Markdown body with usage instructions and available operations.
|
|
57
|
+
|
|
58
|
+
## Adding a New Skill
|
|
59
|
+
|
|
60
|
+
1. Create a new folder under `skills/` with the skill ID as the name
|
|
61
|
+
2. Add a `SKILL.md` file with valid YAML frontmatter and Markdown body
|
|
62
|
+
3. If the skill includes scripts, place them in a `scripts/` subfolder
|
|
63
|
+
4. Update this README to include the new skill in the catalog table
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apify
|
|
3
|
+
description: >
|
|
4
|
+
Web scraping and automation platform. Extract data from any website,
|
|
5
|
+
run pre-built scrapers (Actors), and automate web workflows using
|
|
6
|
+
thousands of ready-made tools from the Apify Store.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de web scraping e automação. Extraia dados de qualquer site,
|
|
9
|
+
execute scrapers prontos (Actors) e automatize fluxos de trabalho web
|
|
10
|
+
com milhares de ferramentas da Apify Store.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de web scraping y automatización. Extrae datos de cualquier sitio web,
|
|
13
|
+
ejecuta scrapers prediseñados (Actors) y automatiza flujos de trabajo web
|
|
14
|
+
con miles de herramientas de la Apify Store.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: apify
|
|
19
|
+
command: npx
|
|
20
|
+
args: ["-y", "@apify/actors-mcp-server@latest"]
|
|
21
|
+
env:
|
|
22
|
+
- APIFY_TOKEN
|
|
23
|
+
categories: [scraping, data, automation]
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Apify Web Scraper
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
|
|
30
|
+
Use Apify when you need to extract data from websites, scrape social media profiles, run search engine queries, or automate web data collection workflows. Apify provides thousands of pre-built scrapers (called Actors) that handle common scraping tasks out of the box.
|
|
31
|
+
|
|
32
|
+
## Instructions
|
|
33
|
+
|
|
34
|
+
You have access to Apify tools for web scraping and data extraction.
|
|
35
|
+
|
|
36
|
+
### Key capabilities
|
|
37
|
+
|
|
38
|
+
- Use Apify Actors (pre-built scrapers) to extract data from websites
|
|
39
|
+
- Popular Actors: web-scraper, instagram-scraper, google-search-scraper, youtube-scraper, twitter-scraper, tiktok-scraper
|
|
40
|
+
- Each Actor has its own input schema -- check documentation before running
|
|
41
|
+
|
|
42
|
+
### Best practices
|
|
43
|
+
|
|
44
|
+
- Start with the simplest Actor that meets the need
|
|
45
|
+
- Use `maxItems` to limit results and avoid excessive costs
|
|
46
|
+
- Check Actor pricing before running (some have per-result costs)
|
|
47
|
+
- Parse results and extract only the fields you need
|
|
48
|
+
|
|
49
|
+
## Available operations
|
|
50
|
+
|
|
51
|
+
- **Run Actor** -- Execute any Apify Actor with custom input parameters
|
|
52
|
+
- **Web Scraping** -- Extract structured data from any website
|
|
53
|
+
- **Social Media Scraping** -- Scrape profiles, posts, and engagement data from Instagram, YouTube, Twitter/X, TikTok
|
|
54
|
+
- **Search Scraping** -- Run Google, Bing, or other search engine queries and collect results
|
|
55
|
+
- **Data Export** -- Retrieve scraped datasets in JSON format
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blotato
|
|
3
|
+
description: >
|
|
4
|
+
Social media publishing and scheduling platform.
|
|
5
|
+
Publish and schedule posts across Instagram, LinkedIn, Twitter/X,
|
|
6
|
+
TikTok, YouTube, and more. Upload media and monitor post status.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de publicação e agendamento em redes sociais.
|
|
9
|
+
Publique e agende posts no Instagram, LinkedIn, Twitter/X,
|
|
10
|
+
TikTok, YouTube e mais. Faça upload de mídia e monitore o status dos posts.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de publicación y programación en redes sociales.
|
|
13
|
+
Publica y programa posts en Instagram, LinkedIn, Twitter/X,
|
|
14
|
+
TikTok, YouTube y más. Sube contenido multimedia y monitorea el estado de los posts.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: blotato
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.blotato.com/mcp"
|
|
21
|
+
headers:
|
|
22
|
+
blotato-api-key: BLOTATO_API_KEY
|
|
23
|
+
env:
|
|
24
|
+
- BLOTATO_API_KEY
|
|
25
|
+
categories: [social-media, automation, publishing, scheduling]
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Blotato Publisher
|
|
29
|
+
|
|
30
|
+
## When to use
|
|
31
|
+
|
|
32
|
+
Use Blotato when you need to publish or schedule social media posts across multiple platforms from a single interface. Blotato supports Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. It handles media uploads, post scheduling, and status monitoring.
|
|
33
|
+
|
|
34
|
+
## Instructions
|
|
35
|
+
|
|
36
|
+
You have access to Blotato for social media publishing.
|
|
37
|
+
|
|
38
|
+
### Key workflow
|
|
39
|
+
|
|
40
|
+
1. Use `blotato_list_accounts` to get account IDs and platforms
|
|
41
|
+
2. If post includes images or videos, upload them with `blotato_upload_media` first and use the returned media IDs in `blotato_create_post`
|
|
42
|
+
3. Use `blotato_create_post` to publish or schedule
|
|
43
|
+
4. Use `blotato_get_post_status` to confirm success
|
|
44
|
+
|
|
45
|
+
### Best practices
|
|
46
|
+
|
|
47
|
+
- Always call `blotato_list_accounts` first to get valid account IDs
|
|
48
|
+
- For scheduled posts, use ISO 8601 format for datetime
|
|
49
|
+
- After posting, poll `blotato_get_post_status` until status is "published" or "scheduled"
|
|
50
|
+
- If status is "failed", report the error details to the user
|
|
51
|
+
|
|
52
|
+
### Requirements
|
|
53
|
+
|
|
54
|
+
- Blotato account required (blotato.com)
|
|
55
|
+
- API key must be configured (Blotato Settings > API section)
|
|
56
|
+
|
|
57
|
+
## Available operations
|
|
58
|
+
|
|
59
|
+
- **List Accounts** -- Retrieve connected social media accounts and their platform types
|
|
60
|
+
- **Upload Media** -- Upload images and videos for use in posts
|
|
61
|
+
- **Create Post** -- Publish or schedule a post to one or more platforms
|
|
62
|
+
- **Get Post Status** -- Monitor publishing status (published, scheduled, failed)
|
|
63
|
+
- **Multi-platform Publishing** -- Post the same content across Instagram, LinkedIn, Twitter/X, TikTok, YouTube simultaneously
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: canva
|
|
3
|
+
description: >
|
|
4
|
+
Create, search, autofill, and export designs from Canva.
|
|
5
|
+
Enables agents to generate visual content, fill templates
|
|
6
|
+
with brand assets, and export in various formats.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Crie, busque, preencha e exporte designs do Canva.
|
|
9
|
+
Permite que agentes gerem conteúdo visual, preencham templates
|
|
10
|
+
com assets da marca e exportem em diversos formatos.
|
|
11
|
+
description_es: >
|
|
12
|
+
Crea, busca, completa y exporta diseños de Canva.
|
|
13
|
+
Permite que los agentes generen contenido visual, completen plantillas
|
|
14
|
+
con recursos de marca y exporten en diversos formatos.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: canva
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.canva.com/mcp"
|
|
21
|
+
categories: [design, ui, assets, automation]
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Canva Connect
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
Use Canva when you need to create, search, or export visual designs. This skill connects to the user's Canva account via OAuth and enables agents to generate presentations, social media posts, logos, and other visual content. It also supports autofilling templates with brand assets and exporting designs in various formats.
|
|
29
|
+
|
|
30
|
+
## Instructions
|
|
31
|
+
|
|
32
|
+
You have access to Canva through the Canva Connect MCP server.
|
|
33
|
+
|
|
34
|
+
### Key capabilities
|
|
35
|
+
|
|
36
|
+
- Create new designs (presentations, social posts, logos, etc.)
|
|
37
|
+
- Autofill templates with content (text, images, brand elements)
|
|
38
|
+
- Search existing designs in the user's Canva account
|
|
39
|
+
- Export designs as PDF or image files
|
|
40
|
+
|
|
41
|
+
### Best practices
|
|
42
|
+
|
|
43
|
+
- Use templates when possible -- faster and more on-brand
|
|
44
|
+
- When autofilling, match content to template placeholder names
|
|
45
|
+
- Export in the format most useful for the pipeline (PNG for social, PDF for documents)
|
|
46
|
+
- Respect the user's Canva plan limitations (some features require paid plans)
|
|
47
|
+
|
|
48
|
+
### Requirements
|
|
49
|
+
|
|
50
|
+
- User needs a Canva account (free or paid)
|
|
51
|
+
- OAuth authorization is required on first use (browser popup)
|
|
52
|
+
- Autofill templates require a Canva paid plan
|
|
53
|
+
|
|
54
|
+
## Available operations
|
|
55
|
+
|
|
56
|
+
- **Create Design** -- Generate new designs from scratch or templates
|
|
57
|
+
- **Search Designs** -- Find existing designs in the user's Canva account
|
|
58
|
+
- **Autofill Template** -- Fill template placeholders with text, images, and brand elements
|
|
59
|
+
- **Export Design** -- Export designs as PDF, PNG, JPG, or other formats
|
|
60
|
+
- **Browse Templates** -- Search Canva's template library for the right starting point
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Best-Practice Creator"
|
|
3
|
+
description: >
|
|
4
|
+
Guides creation and maintenance of best-practice files for the Conectese best-practices library.
|
|
5
|
+
Handles format validation, cross-references, versioning, and catalog consistency.
|
|
6
|
+
description_pt-BR: >
|
|
7
|
+
Guia a criação e manutenção de arquivos de best-practice na biblioteca de best-practices do Conectese.
|
|
8
|
+
Cuida de validação de formato, referências cruzadas, versionamento e consistência do catálogo.
|
|
9
|
+
description_es: >
|
|
10
|
+
Guía la creación y mantenimiento de archivos de best-practice en la biblioteca de best-practices de Conectese.
|
|
11
|
+
Maneja validación de formato, referencias cruzadas, versionamiento y consistencia del catálogo.
|
|
12
|
+
type: prompt
|
|
13
|
+
version: "2.0.0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Best-Practice Creator — Workflow
|
|
17
|
+
|
|
18
|
+
Use this workflow when creating a new best-practice file for the `_conectese/core/best-practices/` library.
|
|
19
|
+
|
|
20
|
+
## Pre-flight Checks
|
|
21
|
+
|
|
22
|
+
1. **Scan existing best-practice files**: Read `_conectese/core/best-practices/_catalog.yaml`. Extract `id`, `name`, `whenToUse`, `file` from each entry.
|
|
23
|
+
2. **Check for overlap**: Verify the new best-practice file doesn't duplicate an existing entry's `whenToUse` scope. If there's overlap, clarify the differentiation before proceeding.
|
|
24
|
+
3. **List available skills**: Read all `skills/*/SKILL.md` files. Extract `name`, `description`, `type` from each — these may inform the best-practice file's content.
|
|
25
|
+
|
|
26
|
+
## Creation Checklist
|
|
27
|
+
|
|
28
|
+
For each new best-practice file, ensure ALL of the following:
|
|
29
|
+
|
|
30
|
+
### Frontmatter (YAML)
|
|
31
|
+
|
|
32
|
+
- [ ] `id`: lowercase kebab-case (e.g., `copywriting`)
|
|
33
|
+
- [ ] `name`: Display name for catalog listing (e.g., `"Copywriting & Persuasive Writing"`)
|
|
34
|
+
- [ ] `whenToUse`: Multi-line with positive scope AND "NOT for: ..." negative scope referencing other best-practice IDs
|
|
35
|
+
- [ ] `version`: `"1.0.0"` for new best-practice files
|
|
36
|
+
|
|
37
|
+
### Body (Markdown) — All sections mandatory
|
|
38
|
+
|
|
39
|
+
- [ ] **Core Principles**: 6+ numbered domain-specific decision rules, each with a bold title and detailed explanation
|
|
40
|
+
- [ ] **Techniques & Frameworks**: Concrete methods, models, or processes practitioners use in this discipline (e.g., diagnostic steps, framework selections, structural patterns)
|
|
41
|
+
- [ ] **Quality Criteria**: 4+ checkable criteria as `- [ ]` list that can be used to evaluate output
|
|
42
|
+
- [ ] **Output Examples**: 2+ complete examples, 15+ lines each, realistic NOT template-like
|
|
43
|
+
- [ ] **Anti-Patterns**: Never Do (4+) + Always Do (3+), each with explanation
|
|
44
|
+
- [ ] **Vocabulary Guidance**: Terms/phrases to Always Use (5+), Terms/phrases to Never Use (3+), Tone Rules (2+)
|
|
45
|
+
|
|
46
|
+
### Quality Minimums
|
|
47
|
+
|
|
48
|
+
| Section | Minimum |
|
|
49
|
+
|---------|---------|
|
|
50
|
+
| Total file lines | 200+ |
|
|
51
|
+
| Core Principles | 6+ numbered rules |
|
|
52
|
+
| Techniques & Frameworks | 3+ concrete techniques |
|
|
53
|
+
| Vocabulary Always Use | 5+ terms |
|
|
54
|
+
| Vocabulary Never Use | 3+ terms |
|
|
55
|
+
| Output Examples | 2 complete, 15+ lines each |
|
|
56
|
+
| Anti-Patterns (Never Do) | 4+ |
|
|
57
|
+
| Anti-Patterns (Always Do) | 3+ |
|
|
58
|
+
| Quality Criteria | 4+ checkable items |
|
|
59
|
+
|
|
60
|
+
## Post-Creation Steps
|
|
61
|
+
|
|
62
|
+
### 1. Update existing best-practice files' `whenToUse`
|
|
63
|
+
|
|
64
|
+
For each existing best-practice file whose scope overlaps with the new one:
|
|
65
|
+
- Add a "NOT for: {overlapping-scope} → See {new-best-practice-id}" line to their `whenToUse`
|
|
66
|
+
- Bump their version (patch increment)
|
|
67
|
+
|
|
68
|
+
### 2. Update `_catalog.yaml`
|
|
69
|
+
|
|
70
|
+
Add a new entry to `_conectese/core/best-practices/_catalog.yaml` with:
|
|
71
|
+
- `id`: matching the frontmatter `id`
|
|
72
|
+
- `name`: matching the frontmatter `name`
|
|
73
|
+
- `whenToUse`: single-line summary of the scope (positive only, no "NOT for")
|
|
74
|
+
- `file`: `{id}.md`
|
|
75
|
+
|
|
76
|
+
Place it under the appropriate section comment (Discipline or Platform best practices).
|
|
77
|
+
|
|
78
|
+
### 3. File placement
|
|
79
|
+
|
|
80
|
+
Save to `_conectese/core/best-practices/{id}.md`.
|
|
81
|
+
|
|
82
|
+
### 4. Validation
|
|
83
|
+
|
|
84
|
+
Re-read the created file and verify:
|
|
85
|
+
- [ ] All checklist items above are present
|
|
86
|
+
- [ ] YAML frontmatter parses correctly (no syntax errors)
|
|
87
|
+
- [ ] `whenToUse` references only existing best-practice IDs
|
|
88
|
+
- [ ] Output examples are realistic, not template placeholders
|
|
89
|
+
- [ ] File exceeds 200 lines
|
|
90
|
+
- [ ] Corresponding entry exists in `_catalog.yaml`
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
# Best-Practice Updater — Workflow
|
|
95
|
+
|
|
96
|
+
Use this workflow when updating best-practice files in the `_conectese/core/best-practices/` library.
|
|
97
|
+
|
|
98
|
+
## Versioning Rules (Semver)
|
|
99
|
+
|
|
100
|
+
| Change Type | Version Bump | Examples |
|
|
101
|
+
|-------------|-------------|----------|
|
|
102
|
+
| **Patch** (x.x.X) | Fix typos, adjust wording, minor refinements | Fix anti-pattern phrasing, correct a vocabulary term |
|
|
103
|
+
| **Minor** (x.X.0) | Add new content, extend capabilities | Add new principle, new output example, new technique |
|
|
104
|
+
| **Major** (X.0.0) | Rewrite or restructure significantly | Rewrite core principles, fundamentally change scope |
|
|
105
|
+
|
|
106
|
+
Always update the `version` field in the YAML frontmatter after any change.
|
|
107
|
+
|
|
108
|
+
## Update Scenarios
|
|
109
|
+
|
|
110
|
+
### When a best-practice file is removed from the library
|
|
111
|
+
|
|
112
|
+
1. Get the removed best-practice file's `id`
|
|
113
|
+
2. Remove its entry from `_conectese/core/best-practices/_catalog.yaml`
|
|
114
|
+
3. Scan ALL remaining best-practice files in `_conectese/core/best-practices/*.md`
|
|
115
|
+
4. For each file, check if the removed ID is referenced in `whenToUse`
|
|
116
|
+
- Look for patterns: "NOT for: ... → See {removed-id}"
|
|
117
|
+
5. If found, remove that "NOT for" line
|
|
118
|
+
6. Bump the affected files' version (patch: x.x.X)
|
|
119
|
+
|
|
120
|
+
### When a new best-practice file is added to the library
|
|
121
|
+
|
|
122
|
+
The Best-Practice Creator workflow (above) handles the initial `whenToUse` cross-references during creation. This section is only needed if cross-references were missed or need adjustment after the fact.
|
|
123
|
+
|
|
124
|
+
1. Read the new best-practice file's `whenToUse` — identify its scope
|
|
125
|
+
2. Scan existing best-practice files for overlapping scope
|
|
126
|
+
3. Add "NOT for: {new-scope} → See {new-id}" where appropriate
|
|
127
|
+
4. Bump affected files' version (patch)
|
|
128
|
+
5. Ensure the new entry exists in `_catalog.yaml`
|
|
129
|
+
|
|
130
|
+
### When updating a best-practice file's content
|
|
131
|
+
|
|
132
|
+
1. Make the content changes
|
|
133
|
+
2. Verify ALL mandatory sections still exist:
|
|
134
|
+
- [ ] Core Principles (6+ rules)
|
|
135
|
+
- [ ] Techniques & Frameworks (3+ techniques)
|
|
136
|
+
- [ ] Quality Criteria (4+ checkable items)
|
|
137
|
+
- [ ] Output Examples (2+ complete examples)
|
|
138
|
+
- [ ] Anti-Patterns (Never Do + Always Do)
|
|
139
|
+
- [ ] Vocabulary Guidance (Always Use, Never Use, Tone Rules)
|
|
140
|
+
3. Bump version according to semver rules above
|
|
141
|
+
4. If the `whenToUse` scope changed, update cross-references in other best-practice files and in `_catalog.yaml`
|
|
142
|
+
|
|
143
|
+
### When updating a best-practice file's `whenToUse` scope
|
|
144
|
+
|
|
145
|
+
This is the most impactful change — it affects how the Architect selects best practices during squad creation.
|
|
146
|
+
|
|
147
|
+
1. Document the old scope and new scope
|
|
148
|
+
2. Update the best-practice file's `whenToUse` field
|
|
149
|
+
3. Scan ALL other best-practice files' `whenToUse` for references to this ID
|
|
150
|
+
4. Update cross-references to reflect the new scope
|
|
151
|
+
5. Update the `whenToUse` summary in `_catalog.yaml`
|
|
152
|
+
6. Bump version (minor if scope expanded, patch if scope narrowed)
|
|
153
|
+
|
|
154
|
+
## Validation Checklist
|
|
155
|
+
|
|
156
|
+
After ANY update, verify:
|
|
157
|
+
|
|
158
|
+
- [ ] Version was bumped correctly (patch/minor/major per rules above)
|
|
159
|
+
- [ ] All mandatory sections still present and non-empty
|
|
160
|
+
- [ ] `whenToUse` cross-references are consistent across ALL best-practice files
|
|
161
|
+
- [ ] No broken cross-references to removed best-practice IDs
|
|
162
|
+
- [ ] Output examples are still realistic and complete
|
|
163
|
+
- [ ] File still exceeds 200 lines minimum
|
|
164
|
+
- [ ] `_catalog.yaml` entry is in sync with frontmatter (`id`, `name`, `whenToUse`)
|
|
165
|
+
|
|
166
|
+
## Bulk Operations
|
|
167
|
+
|
|
168
|
+
### Verify catalog consistency
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
Read _conectese/core/best-practices/_catalog.yaml
|
|
172
|
+
For each entry in catalog:
|
|
173
|
+
1. Verify _conectese/core/best-practices/{entry.file} exists
|
|
174
|
+
2. Read the file's frontmatter
|
|
175
|
+
3. Verify entry.id matches frontmatter id
|
|
176
|
+
4. Verify entry.name matches frontmatter name
|
|
177
|
+
5. Flag any mismatches
|
|
178
|
+
|
|
179
|
+
For each .md file in _conectese/core/best-practices/ (excluding _catalog.yaml):
|
|
180
|
+
1. Verify a corresponding entry exists in _catalog.yaml
|
|
181
|
+
2. Flag any orphaned files with no catalog entry
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Verify cross-reference consistency
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
For each best-practice file A in _conectese/core/best-practices/*.md:
|
|
188
|
+
For each "NOT for: ... → See {id}" in A.whenToUse:
|
|
189
|
+
1. Verify _conectese/core/best-practices/{id}.md exists
|
|
190
|
+
2. Verify {id}'s whenToUse covers the referenced scope
|
|
191
|
+
3. Flag inconsistencies
|
|
192
|
+
```
|