@javierfrancoleal/conductor 0.0.0-stage → 1.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 J.Franco
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,28 @@
1
- # Temporary Holding Version
1
+ ---
2
+ description: "The teacher organ: detects user-AI friction and delivers micro-lessons with prompt templates."
3
+ kind: "package-bundle"
4
+ ---
2
5
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
6
+ # @javierfrancoleal/conductor
7
+
8
+ Created by **J.Franco**.
9
+
10
+ ## Summary
11
+
12
+ For vibe coding: when the human's directions are vague and friction
13
+ appears (repeated revisions, "no funciona", frustration), the conductor
14
+ delivers ONE micro-lesson — the relevant basic concept (layers, flow,
15
+ timeline, components, color, animation, design system) in the user's own
16
+ language, with a prompt template and one clarifying question.
17
+
18
+ The full curriculum lives in the suite's `docs/CONDUCTOR-GUIDE.md`.
19
+
20
+ ## Use this plugin
21
+
22
+ Ask "conductor" or use `/conductor "what the user said"` when a request
23
+ gets stuck. The organ detects the friction signal, teaches once, and
24
+ returns to work.
25
+
26
+ ## License
27
+
28
+ MIT — see the package license field.
@@ -0,0 +1,60 @@
1
+ # Conductor — the teacher organ
2
+
3
+ Vibe coding means the human directs with plain words and the AI builds.
4
+ When the directions are vague, friction appears: repeated revisions of the
5
+ same feature, "hazlo bonito", "no me gusta", frustration. This organ turns
6
+ that friction into education — in the moment, before it becomes a wall.
7
+
8
+ ## Friction signals
9
+
10
+ Detect them while working:
11
+
12
+ - The same feature is being revised for the 3rd time.
13
+ - The directive has no measurable property ("bonito", "mejor", "bien").
14
+ - The user expresses confusion or frustration ("no sé ni por dónde empezar").
15
+ - The user describes the SYMPTOM without the LAYER ("no funciona", "no
16
+ pasa nada") — they cannot locate the problem.
17
+
18
+ ## The response: one micro-lesson, not a lecture
19
+
20
+ When friction is detected, STOP editing and deliver ONE micro-lesson:
21
+
22
+ 1. **Name the concept** (from the conductor's guide: layers, flow, timeline,
23
+ components, color/transparency, animation, design system).
24
+ 2. **Explain it in one restaurant analogy** (the user's language).
25
+ 3. **Show the exact vocabulary** to describe what they want.
26
+ 4. **Give the prompt template** with their case filled in.
27
+ 5. **Ask ONE clarifying question** ("¿te refieres a la capa, al color, o
28
+ al ritmo?") — never three.
29
+
30
+ Keep it under 150 words. The goal is a director who gives better orders,
31
+ not a lecture they must survive.
32
+
33
+ ## The seven concepts (from docs/CONDUCTOR-GUIDE.md)
34
+
35
+ 1. Layers (z-index) — "encima de / detrás de".
36
+ 2. Flow — "una puerta, una secuencia A→B→C".
37
+ 3. Timeline — "primero… después… sin solaparse".
38
+ 4. Components — "logo, rectángulo, esquinas, tamaño".
39
+ 5. Color & transparency — "morado translúcido, alfa 0.3, contraste".
40
+ 6. Animation — "bucle sin salto, velocidad, visible por defecto".
41
+ 7. Design system — "misma estética que…".
42
+
43
+ ## The master template
44
+
45
+ "[Acción] [componente] en [pantalla]: [propiedad] de [valor A] a [valor
46
+ B], con [detalle], a [velocidad], [condición]. Misma estética que
47
+ [pantalla de referencia]."
48
+
49
+ ## The standard
50
+
51
+ This organ is Pillar 2 of EL FUEGO — the J.Franco standard
52
+ for human-AI knowledge transfer (docs/EL-FUEGO.md in the suite repo).
53
+ Every lesson delivered here must be recorded in the canonical format.
54
+
55
+ ## Rules
56
+
57
+ - One lesson per friction event.
58
+ - The human is the director: never talk down, never skip the clarifying
59
+ question.
60
+ - If the user already speaks the vocabulary, do not teach — just act.
@@ -0,0 +1,4 @@
1
+ # @javierfrancoleal/conductor — J.Franco's teacher organ.
2
+ - insert:
3
+ - id: conductor
4
+ name: '@javierfrancoleal/conductor'
package/icon.svg ADDED
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
2
+ <rect width="64" height="64" rx="14" fill="#4D6BFE"/>
3
+ <circle cx="32" cy="32" r="18" fill="none" stroke="#ffffff" stroke-width="3.5"/>
4
+ <path d="M14 40 C 18 48, 26 52, 32 52 C 40 52, 48 48, 52 40" fill="none" stroke="#FACC15" stroke-width="3.5" stroke-linecap="round"/>
5
+ <circle cx="32" cy="32" r="3" fill="#ffffff"/>
6
+ </svg>
package/lib/index.js ADDED
@@ -0,0 +1,56 @@
1
+ // @javierfrancoleal/conductor — an organ of the J.Franco agentic workflow.
2
+ // Created by J.Franco. Registers the conductor skill provider and, when the
3
+ // host command registry is available, the /conductor command.
4
+ import { readFile } from "node:fs/promises";
5
+ import { fileURLToPath } from "node:url";
6
+ import { BUNDLED_SKILL_RANK } from "@deepseek-ai/dsh-skill";
7
+
8
+ const PROVIDER_NAME = "javierfrancoleal-conductor";
9
+ const SKILL_BODY_URL = new URL("../assets/conductor.md", import.meta.url);
10
+ const RESOURCE_BASE = { kind: "directory", path: fileURLToPath(new URL("../assets/", import.meta.url)) };
11
+
12
+ const CANDIDATE = {
13
+ name: "conductor",
14
+ description: "The teacher organ of the J.Franco agentic workflow: detects friction between the user and the AI and delivers one micro-lesson with a prompt template and a clarifying question.",
15
+ invocation: { modelInvocable: true, userInvocable: true },
16
+ provider: PROVIDER_NAME,
17
+ source: "bundled",
18
+ resourceBase: RESOURCE_BASE,
19
+ rank: BUNDLED_SKILL_RANK,
20
+ locator: SKILL_BODY_URL,
21
+ };
22
+
23
+ const provider = {
24
+ name: PROVIDER_NAME,
25
+ list: () => Promise.resolve([CANDIDATE]),
26
+ async get() {
27
+ return {
28
+ name: CANDIDATE.name,
29
+ description: CANDIDATE.description,
30
+ invocation: CANDIDATE.invocation,
31
+ provider: CANDIDATE.provider,
32
+ source: CANDIDATE.source,
33
+ resourceBase: RESOURCE_BASE,
34
+ content: await readFile(SKILL_BODY_URL, "utf8"),
35
+ };
36
+ },
37
+ };
38
+
39
+ const name = "conductor";
40
+ const inject = ["skills"];
41
+
42
+ function apply(ctx) {
43
+ ctx.skills.registerProvider(() => provider);
44
+ const commands = ctx.get("commands");
45
+ if (commands !== undefined) {
46
+ commands.register({
47
+ definitionId: "@javierfrancoleal/conductor",
48
+ name: "conductor",
49
+ description: "Teach one concept when a request gets stuck or vague",
50
+ input: { hint: "[what the user said or asked]", attachments: true },
51
+ handler: () => ({ text: "Conductor ON. When a request gets stuck or vague, I teach one concept in your language, give you the exact words, and ask one clarifying question." }),
52
+ });
53
+ }
54
+ }
55
+
56
+ export { apply, inject, name };
package/locale/ar.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "مُعلّم",
4
+ "description": "يكتشف الاحتكاك بين المستخدم والذكاء الاصطناعي ويعلّم مفهومًا واحدًا في كل مرة."
5
+ }
6
+ }
package/locale/de.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Lehrer",
4
+ "description": "Erkennt Reibung zwischen Nutzer und KI und lehrt ein Konzept nach dem anderen."
5
+ }
6
+ }
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Teacher",
4
+ "description": "Detects user-AI friction and teaches one concept at a time."
5
+ }
6
+ }
package/locale/es.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Maestro",
4
+ "description": "Detecta la fricción usuario-IA y enseña un concepto a la vez."
5
+ }
6
+ }
package/locale/fr.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Professeur",
4
+ "description": "Détecte les frictions utilisateur-IA et enseigne un concept à la fois."
5
+ }
6
+ }
package/locale/it.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Maestro",
4
+ "description": "Rileva l'attrito utente-IA e insegna un concetto alla volta."
5
+ }
6
+ }
package/locale/ja.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "教師",
4
+ "description": "ユーザーとAIの摩擦を検出し、一度に一つの概念を教えます。"
5
+ }
6
+ }
package/locale/ko.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "교사",
4
+ "description": "사용자-AI 마찰을 감지하고 한 번에 한 개념을 가르칩니다."
5
+ }
6
+ }
package/locale/pt.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Mestre",
4
+ "description": "Deteta o atrito utilizador-IA e ensina um conceito de cada vez."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "导师",
4
+ "description": "检测用户与 AI 之间的摩擦,并一次教授一个概念。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,55 @@
1
1
  {
2
2
  "name": "@javierfrancoleal/conductor",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "description": "The teacher organ of the J.Franco agentic workflow: detects friction between the user and the AI (repeated revisions, vague directives, frustration) and delivers micro-lessons from the conductor's guide, with prompt templates. Created by J.Franco.",
5
+ "author": "J.Franco",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "main": "lib/index.js",
9
+ "exports": {
10
+ ".": "./lib/index.js",
11
+ "./cordis.patch.yml": "./cordis.patch.yml",
12
+ "./package.json": "./package.json",
13
+ "./locale/*.json": "./locale/*.json"
14
+ },
15
+ "icon": "./icon.svg",
16
+ "files": [
17
+ "icon.svg",
18
+ "locale/*.json",
19
+ "lib/index.js",
20
+ "assets",
21
+ "cordis.patch.yml",
22
+ "README.md"
23
+ ],
24
+ "engines": {
25
+ "node": ">=24",
26
+ "dsh": ">=0.2.1-rc.0"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/JavierFrancoLeal/jfranco-agentic-suite.git",
31
+ "directory": "jfranco-conductor"
32
+ },
33
+ "homepage": "https://github.com/JavierFrancoLeal/jfranco-agentic-suite",
34
+ "keywords": [
35
+ "deepseek-harness",
36
+ "agentic-workflow",
37
+ "super-agent",
38
+ "education",
39
+ "vibe-coding",
40
+ "friction"
41
+ ],
42
+ "dsh": {
43
+ "manifestVersion": 1,
44
+ "bundle": {
45
+ "patch": "./cordis.patch.yml"
46
+ }
47
+ },
48
+ "publishConfig": {
49
+ "access": "public"
50
+ },
51
+ "peerDependencies": {
52
+ "@deepseek-ai/cordis": "~4.0.5",
53
+ "@deepseek-ai/dsh-skill": ">=0.2.1-rc.5"
54
+ }
55
+ }