@xmarts/genius-setup 1.16.1 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/genius-setup.js
CHANGED
|
@@ -37,6 +37,13 @@ function log(msg) { process.stdout.write(msg + '\n'); }
|
|
|
37
37
|
const BASE = (arg('base-url', 'https://beesmart.digital')).replace(/\/+$/, '');
|
|
38
38
|
const CLIENT = arg('client', '');
|
|
39
39
|
|
|
40
|
+
// W-04: single source of the running version — package.json is always present in
|
|
41
|
+
// the published tarball. UA + telemetry report THIS, never a hardcoded literal
|
|
42
|
+
// (the fleet ran with 'XmartsGenius-Setup/1.6.0' frozen across 11 releases).
|
|
43
|
+
let PKG_VERSION = 'unknown';
|
|
44
|
+
try { PKG_VERSION = require('../package.json').version || 'unknown'; } catch (_) {}
|
|
45
|
+
const UA = 'XmartsGenius-Setup/' + PKG_VERSION;
|
|
46
|
+
|
|
40
47
|
// -----------------------------------------------------------------------------
|
|
41
48
|
// Token resolution (priority order):
|
|
42
49
|
// 1. GENIUS_TOKEN env — an already-resolved consultant Bearer (back-compat
|
|
@@ -78,7 +85,7 @@ function exchangeSetupToken(setupToken, cb) {
|
|
|
78
85
|
'Content-Type': 'application/json',
|
|
79
86
|
'Content-Length': Buffer.byteLength(payload),
|
|
80
87
|
// Cloudflare in front of beesmart.digital 403s the default Node UA.
|
|
81
|
-
'User-Agent':
|
|
88
|
+
'User-Agent': UA,
|
|
82
89
|
},
|
|
83
90
|
timeout: 15000,
|
|
84
91
|
}, (res) => {
|
|
@@ -152,6 +159,24 @@ function runSetup(token) {
|
|
|
152
159
|
const guardDst = copyHook('plan_committee_guard.py');
|
|
153
160
|
const presenceDst = copyHook('genius_presence.py');
|
|
154
161
|
|
|
162
|
+
// W-04 telemetry stamp: the inject hook reads installed_version + hooks_hash
|
|
163
|
+
// from config.json and reports them on every /inject, so the server-side
|
|
164
|
+
// fleet-skew view reflects what each device ACTUALLY runs (0/16 reported
|
|
165
|
+
// anything before this). Hash = sha256 over the exact hook bytes installed,
|
|
166
|
+
// in a fixed filename order — drift in any hook file changes it.
|
|
167
|
+
try {
|
|
168
|
+
const crypto = require('crypto');
|
|
169
|
+
const h = crypto.createHash('sha256');
|
|
170
|
+
['genius_capture.py', 'genius_inject.py', 'plan_committee_guard.py', 'genius_presence.py']
|
|
171
|
+
.forEach((f) => {
|
|
172
|
+
try { h.update(fs.readFileSync(path.join(HOOKS_DIR, f))); } catch (_) {}
|
|
173
|
+
});
|
|
174
|
+
const c2 = readJson(cfgPath0);
|
|
175
|
+
c2.installed_version = PKG_VERSION;
|
|
176
|
+
c2.hooks_hash = h.digest('hex').slice(0, 64);
|
|
177
|
+
writeJson(cfgPath0, c2, true);
|
|
178
|
+
} catch (_) {}
|
|
179
|
+
|
|
155
180
|
// 2) ~/.claude.json mcpServers (merge, no clobber)
|
|
156
181
|
const claudeJsonPath = path.join(HOME, '.claude.json');
|
|
157
182
|
const claudeJson = readJson(claudeJsonPath);
|
|
@@ -309,13 +334,18 @@ function runSetup(token) {
|
|
|
309
334
|
let url;
|
|
310
335
|
try { url = new URL(BASE + '/xma/genius/v1/mcp/secrets'); } catch (_) { return; }
|
|
311
336
|
const mod = url.protocol === 'http:' ? require('http') : require('https');
|
|
312
|
-
|
|
337
|
+
let hooksHash = '';
|
|
338
|
+
try { hooksHash = readJson(path.join(GENIUS_DIR, 'config.json')).hooks_hash || ''; } catch (_) {}
|
|
339
|
+
const payload = JSON.stringify({ jsonrpc: '2.0', method: 'call', id: 1, params: {
|
|
340
|
+
running_version: JSON.stringify({ 'genius-setup': PKG_VERSION }),
|
|
341
|
+
hooks_hash: hooksHash,
|
|
342
|
+
} });
|
|
313
343
|
const req = mod.request({
|
|
314
344
|
hostname: url.hostname, port: url.port || (url.protocol === 'http:' ? 80 : 443),
|
|
315
345
|
path: url.pathname, method: 'POST',
|
|
316
346
|
headers: {
|
|
317
347
|
'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload),
|
|
318
|
-
'Authorization': 'Bearer ' + token, 'User-Agent':
|
|
348
|
+
'Authorization': 'Bearer ' + token, 'User-Agent': UA,
|
|
319
349
|
},
|
|
320
350
|
timeout: 15000,
|
|
321
351
|
}, (res) => {
|
package/hooks/genius_inject.py
CHANGED
|
@@ -9,7 +9,7 @@ prior knowledge WITHOUT asking. Editor-agnostic (terminal / VSCode / headless).
|
|
|
9
9
|
|
|
10
10
|
Hard rules:
|
|
11
11
|
- ALWAYS exit 0 (never block a turn).
|
|
12
|
-
- Time-box the network call (<=
|
|
12
|
+
- Time-box the network call (<=3.5s, TIMEOUT below) so injection stays cheap.
|
|
13
13
|
- Relevance-floored: nothing relevant -> inject nothing (zero noise).
|
|
14
14
|
- Reads endpoint + bearer from ~/.genius/config.json (written by the installer);
|
|
15
15
|
no secret is embedded here.
|
|
@@ -61,18 +61,35 @@ def _emit(event_name, context):
|
|
|
61
61
|
sys.exit(0)
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
def _inject(cfg, prompt):
|
|
64
|
+
def _inject(cfg, prompt, session_id=None):
|
|
65
65
|
base = (cfg.get("base_url") or "https://beesmart.digital").rstrip("/")
|
|
66
66
|
token = cfg.get("token")
|
|
67
67
|
if not token or not prompt.strip():
|
|
68
|
-
|
|
68
|
+
# MUST stay a 4-tuple: main() unpacks 4 values. The historical 3-tuple
|
|
69
|
+
# here made every empty-prompt turn raise ValueError inside main(),
|
|
70
|
+
# silently losing BOTH injection and the self-update check for that turn.
|
|
71
|
+
return "", None, None, None
|
|
72
|
+
params = {"prompt": prompt[:4000], "limit": 4}
|
|
73
|
+
# W-04 telemetry: real Claude Code session id (server persists it as the
|
|
74
|
+
# hint-event session_key, enabling same-session implicit correlation) plus
|
|
75
|
+
# the installed package version + hooks hash (stamped into config.json by
|
|
76
|
+
# the installer) so the fleet-skew view knows what each device ACTUALLY runs.
|
|
77
|
+
if session_id:
|
|
78
|
+
params["session_id"] = str(session_id)[:128]
|
|
79
|
+
if cfg.get("installed_version"):
|
|
80
|
+
params["running_version"] = json.dumps(
|
|
81
|
+
{"genius-setup": str(cfg["installed_version"])[:32]})
|
|
82
|
+
if cfg.get("hooks_hash"):
|
|
83
|
+
params["hooks_hash"] = str(cfg["hooks_hash"])[:64]
|
|
69
84
|
body = json.dumps({"jsonrpc": "2.0", "method": "call", "id": 1,
|
|
70
|
-
"params":
|
|
85
|
+
"params": params}).encode()
|
|
71
86
|
req = urllib.request.Request(base + "/xma/genius/v1/inject", data=body)
|
|
72
87
|
req.add_header("Content-Type", "application/json")
|
|
73
88
|
req.add_header("Authorization", "Bearer %s" % token)
|
|
74
89
|
# Cloudflare in front of beesmart.digital 403s the default Python-urllib UA.
|
|
75
|
-
|
|
90
|
+
# Dynamic UA (W-04): report the installed version, not a hardcoded 1.0.
|
|
91
|
+
req.add_header("User-Agent", "XmartsGenius-Inject/%s"
|
|
92
|
+
% (cfg.get("installed_version") or "unknown"))
|
|
76
93
|
try:
|
|
77
94
|
resp = urllib.request.urlopen(req, timeout=TIMEOUT)
|
|
78
95
|
data = json.loads(resp.read())
|
|
@@ -90,7 +107,7 @@ def _inject(cfg, prompt):
|
|
|
90
107
|
# version dictated by the server (xma_genius.hook_pin_version, returned in the
|
|
91
108
|
# inject response) and otherwise fall back to this bundled known-good pin — the
|
|
92
109
|
# client never resolves the mutable `@latest` tag.
|
|
93
|
-
PINNED_FALLBACK = "1.
|
|
110
|
+
PINNED_FALLBACK = "1.18.0"
|
|
94
111
|
|
|
95
112
|
|
|
96
113
|
def _pkg_spec(pin_version):
|
|
@@ -260,7 +277,8 @@ def main():
|
|
|
260
277
|
_maybe_self_update(cfg) # TTL-only on priming
|
|
261
278
|
_emit("SessionStart", SESSION_PRIMER)
|
|
262
279
|
else:
|
|
263
|
-
context, force_epoch, pin_version, mcp_epoch = _inject(
|
|
280
|
+
context, force_epoch, pin_version, mcp_epoch = _inject(
|
|
281
|
+
cfg, event.get("prompt") or "", session_id=event.get("session_id"))
|
|
264
282
|
# The inject call already round-tripped the server, so honour any
|
|
265
283
|
# admin-pushed force-update epoch here (bypasses the daily TTL) and install
|
|
266
284
|
# the exact server-pinned version (never @latest). A newer MCP manifest
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmarts/genius-setup",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "One-command, self-updating onboarding for Xmarts Genius (Brain MCP + per-turn injection + automatic session/time capture + presence heartbeat for honest time-tracking 'amarre' + plan/committee
|
|
3
|
+
"version": "1.18.0",
|
|
4
|
+
"description": "One-command, self-updating onboarding for Xmarts Genius (Brain MCP + per-turn injection + automatic session/time capture + presence heartbeat for honest time-tracking 'amarre' + plan/committee\u2192Brain enforcement + CLAUDE.md protocol + MCP fan-out: provisions the consultant's granted MCP servers into Claude Code & Claude Desktop). Secret-free onboarding via single-use setup-token exchange. Installs once; self-updates daily so new tools/skills/features arrive with zero action.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"genius-setup": "bin/genius-setup.js"
|
|
7
7
|
},
|
|
@@ -21,4 +21,4 @@
|
|
|
21
21
|
"license": "UNLICENSED",
|
|
22
22
|
"author": "Xmarts",
|
|
23
23
|
"private": false
|
|
24
|
-
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cinematic-scroll-site
|
|
3
|
+
description: Construye sitios "cinematic 3D-scroll" award-winning (efecto Apple: un video que se scrubbea con el scroll como una sola toma de cámara) con la técnica REAL (canvas frame-sequence + Lenis/GSAP), plantilla de brief de un-prompt, y 10 verticales listos (producto de lujo, restaurante, real estate, portafolio, e-commerce, SaaS, agencia, gym...). USAR cuando el usuario pida un sitio cinematic, "3D scroll", "scroll-scrub", una landing premium con video hero, o un sitio para un negocio local. Los assets se generan con higgsfield-video; el gusto lo pone design-taste-frontend; el copy pasa por content-humanizer.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cinematic Scroll Site: la técnica real, no la del lead-magnet
|
|
7
|
+
|
|
8
|
+
Base verificada (Brain #6649, scouts 2026-07-07). El efecto "el video se mueve con
|
|
9
|
+
el scroll como una toma continua" es la firma de estos sitios. La mayoría lo hace mal.
|
|
10
|
+
|
|
11
|
+
## Regla dura #1: NO se scrubbea un `<video>`
|
|
12
|
+
|
|
13
|
+
Scrubbear `video.currentTime` con el scroll tartamudea, snapea a keyframes, y FALLA
|
|
14
|
+
en Safari iOS (decodifica para playback, no para seek). Apple NO scrubbea un video:
|
|
15
|
+
dibuja una SECUENCIA DE FRAMES en un `<canvas>`. Caso de producción que lo documenta:
|
|
16
|
+
OPTIKKA (Codrops, 2025-10-16), que migró de `<video>` a frame-sequence justo por esto.
|
|
17
|
+
|
|
18
|
+
La técnica correcta: `frame = round(scrollProgress * (n-1))`, y `ctx.drawImage(frame)`
|
|
19
|
+
en un solo canvas pinneado a pantalla completa.
|
|
20
|
+
|
|
21
|
+
## Paso a paso (build-ready)
|
|
22
|
+
|
|
23
|
+
### 1. Genera el clip y extrae frames
|
|
24
|
+
El clip cinematográfico se genera con `higgsfield-video` (Kling 3.0 default por costo;
|
|
25
|
+
premium solo para el hero final). Luego:
|
|
26
|
+
```bash
|
|
27
|
+
ffmpeg -i clip.mp4 -vf "fps=30" png/frame_%03d.png
|
|
28
|
+
ffmpeg -i png/frame_%03d.png -c:v libwebp -quality 80 webp/frame_%03d.webp
|
|
29
|
+
```
|
|
30
|
+
Target 20 a 60 KB por frame (147 frames a 40 KB = ~6 MB, presupuesto de hero sano).
|
|
31
|
+
Exporta un set REDUCIDO (menos frames, menos resolución) para móvil.
|
|
32
|
+
|
|
33
|
+
### 2. Un canvas pinneado + el helper oficial de GreenSock
|
|
34
|
+
Nunca cambies el `src` de un `<img>` en scroll (flicker + reflow). Siempre `drawImage`
|
|
35
|
+
a un canvas. Dimensiona el canvas por `devicePixelRatio` y calcula offsets cover-fit.
|
|
36
|
+
```javascript
|
|
37
|
+
gsap.registerPlugin(ScrollTrigger);
|
|
38
|
+
|
|
39
|
+
function imageSequence(config) {
|
|
40
|
+
let playhead = { frame: 0 },
|
|
41
|
+
canvas = gsap.utils.toArray(config.canvas)[0],
|
|
42
|
+
ctx = canvas.getContext("2d"),
|
|
43
|
+
curFrame = -1,
|
|
44
|
+
onUpdate = config.onUpdate,
|
|
45
|
+
images,
|
|
46
|
+
updateImage = function () {
|
|
47
|
+
let frame = Math.round(playhead.frame);
|
|
48
|
+
if (frame !== curFrame) {
|
|
49
|
+
config.clear && ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
50
|
+
ctx.drawImage(images[frame], 0, 0);
|
|
51
|
+
curFrame = frame;
|
|
52
|
+
onUpdate && onUpdate.call(this, frame, images[frame]);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
images = config.urls.map((url, i) => {
|
|
56
|
+
let img = new Image();
|
|
57
|
+
img.src = url;
|
|
58
|
+
i || (img.onload = updateImage); // dibuja el primer frame al cargar
|
|
59
|
+
return img;
|
|
60
|
+
});
|
|
61
|
+
return gsap.to(playhead, {
|
|
62
|
+
frame: images.length - 1,
|
|
63
|
+
ease: "none",
|
|
64
|
+
onUpdate: updateImage,
|
|
65
|
+
duration: images.length / (config.fps || 30),
|
|
66
|
+
paused: !!config.paused,
|
|
67
|
+
scrollTrigger: config.scrollTrigger
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
imageSequence({
|
|
72
|
+
urls: Array.from({ length: 147 }, (_, i) =>
|
|
73
|
+
`frames/frame_${String(i + 1).padStart(3, "0")}.webp`),
|
|
74
|
+
canvas: "#hero-canvas",
|
|
75
|
+
clear: true, // solo si los frames tienen transparencia; omítelo si son opacos full-bleed
|
|
76
|
+
scrollTrigger: { trigger: ".hero", start: "top top", end: "+=3000", scrub: true, pin: true }
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
`end` largo = scrub más lento y cinemático. En React existe `@bsmnt/scrollytelling`
|
|
80
|
+
con un `ImageSequenceCanvas` ya hecho (misma mecánica).
|
|
81
|
+
|
|
82
|
+
### 3. Preload inteligente
|
|
83
|
+
Primeros ~10 frames eager, el resto por cola en background, prefetch direccional
|
|
84
|
+
(unos frames adelante al bajar, atrás al subir). Dibuja el primer frame en su `onload`.
|
|
85
|
+
|
|
86
|
+
### 4. Smooth scroll (glue de UNA sola RAF)
|
|
87
|
+
Verbatim del README oficial de Lenis. NO corras además tu propio `requestAnimationFrame`
|
|
88
|
+
para Lenis (double-drive = jitter).
|
|
89
|
+
```javascript
|
|
90
|
+
const lenis = new Lenis();
|
|
91
|
+
lenis.on("scroll", ScrollTrigger.update);
|
|
92
|
+
gsap.ticker.add((time) => { lenis.raf(time * 1000); });
|
|
93
|
+
gsap.ticker.lagSmoothing(0);
|
|
94
|
+
```
|
|
95
|
+
Alternativa: GSAP ScrollSmoother. Nunca los dos a la vez.
|
|
96
|
+
|
|
97
|
+
## Plantilla de brief de un-prompt
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Construye un sitio award-winning cinematic 3D-scroll para <MARCA>.
|
|
101
|
+
VISUALS (higgsfield-video, std 1080p, aspecto 16:9, ~8s/clip, sin audio):
|
|
102
|
+
genera UNA hero image primero y pásala como referencia a CADA clip (consistencia).
|
|
103
|
+
<3 a 5 shots, UN movimiento de cámara por shot, numerados>.
|
|
104
|
+
WEBSITE: scroll-scrub del hero como canvas frame-sequence (Lenis + GSAP), secciones
|
|
105
|
+
pinneadas: <lista de secciones>.
|
|
106
|
+
DESIGN: <fondo> / <acento único> / <tipografía>.
|
|
107
|
+
COPY TONE: <voz>, pocas palabras.
|
|
108
|
+
Launch on localhost and verify <la animación> before telling me it's done.
|
|
109
|
+
```
|
|
110
|
+
Esa última línea (auto-verificación forzada) es nuestra disciplina, no un adorno.
|
|
111
|
+
Ver `references/verticals.md` para los 10 briefs por vertical ya armados.
|
|
112
|
+
|
|
113
|
+
## Consistencia y encadenado (con honestidad)
|
|
114
|
+
|
|
115
|
+
- **Hero-image primero:** genera una imagen y úsala como referencia (`input_files`) en
|
|
116
|
+
cada clip. Best practice DOCUMENTADA de Seedance 2.0 ("faces, clothing, visual style
|
|
117
|
+
stay locked across shots").
|
|
118
|
+
- **Personas recurrentes:** entrena un Soul ID una vez y reusa su `reference_id`
|
|
119
|
+
(más fuerte que una imagen suelta).
|
|
120
|
+
- **Encadenar clips:** Seedance 2.0 SÍ acepta start + end frame ("Start & End Frames").
|
|
121
|
+
Encadenar 5 clips (last-frame de uno como start-frame del siguiente) para "una toma
|
|
122
|
+
continua sin cortes" es un truco best-effort, NO garantizado por Higgsfield. No lo
|
|
123
|
+
prometas al cliente. El nombre exacto del param end-frame del MCP no está documentado;
|
|
124
|
+
resuélvelo en runtime (probe / `extra_params`).
|
|
125
|
+
|
|
126
|
+
## Defaults de costo (los créditos expiran)
|
|
127
|
+
|
|
128
|
+
std 1080p, ~8s, sin audio por default. 4K SOLO para el render final. "Compress the
|
|
129
|
+
videos for web" (~-90%). Genera 2 a 3 tomas SOLO del hero (el hero-scrub es ~80% del wow).
|
|
130
|
+
|
|
131
|
+
## Iterar como director, no como developer
|
|
132
|
+
|
|
133
|
+
Notas por sensación: "hazlo 20% más lento", "esta sección se siente plana, agrega una
|
|
134
|
+
interacción de cursor sutil", "cambia la tipografía, se ve genérica". El agente traduce
|
|
135
|
+
intención a código.
|
|
136
|
+
|
|
137
|
+
## Deploy "un prompt más" (Cloudflare Pages, gratis)
|
|
138
|
+
|
|
139
|
+
1. `git push` de los estáticos a un repo de GitHub.
|
|
140
|
+
2. Dash Cloudflare, Workers & Pages, Create application, Pages, Connect to Git, autoriza
|
|
141
|
+
el repo.
|
|
142
|
+
3. Build command en BLANCO (HTML plano), Build output directory = carpeta del HTML.
|
|
143
|
+
4. Save and Deploy (30 a 60s, obtienes `proyecto.pages.dev`).
|
|
144
|
+
5. Custom domains, agrega el dominio (si ya está en Cloudflare crea el CNAME solo).
|
|
145
|
+
|
|
146
|
+
Gotchas: (1) un proyecto Git-integration NO se puede pasar luego a Direct Upload;
|
|
147
|
+
(2) completa el paso de custom-domain en el dash ANTES de agregar el CNAME o da 522;
|
|
148
|
+
(3) records CAA que no permitan Cloudflare bloquean el certificado.
|
|
149
|
+
|
|
150
|
+
## GTM (empaquetable)
|
|
151
|
+
|
|
152
|
+
Los verticales restaurante, realtor y gym son un entregable local de $2,000 a $5,000:
|
|
153
|
+
construye un sample, muéstralo a 5 negocios, cobra. Nunca han visto un sitio así.
|
|
154
|
+
|
|
155
|
+
## Referencia autoritativa (opcional, para el admin)
|
|
156
|
+
|
|
157
|
+
Para que el agente escriba pin/scrub/refresh/cleanup de GSAP impecables, el admin puede
|
|
158
|
+
sumar a la flota el skill OFICIAL de GreenSock (MIT, auditado seguro):
|
|
159
|
+
`/plugin marketplace add greensock/gsap-skills`. Este skill ya trae la receta inline,
|
|
160
|
+
así que funciona sin él; es un plus, no un requisito.
|
|
161
|
+
|
|
162
|
+
## Cross-refs
|
|
163
|
+
|
|
164
|
+
- Assets (imagen/video): `higgsfield-video`, y NanoBanana2 para keyframes.
|
|
165
|
+
- Gusto y anti-slop de diseño: `design-taste-frontend` + el theme engine OKLCH.
|
|
166
|
+
- Copy sin señales de IA: `content-humanizer`.
|
|
167
|
+
- Finishing determinista de clips (grain, Ken Burns, transiciones): `remotion-video`.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# 10 verticales cinematic 3D-scroll (briefs base)
|
|
2
|
+
|
|
3
|
+
Cada uno: para quién, los shots (3 a 5, UN movimiento de cámara cada uno), las secciones
|
|
4
|
+
pinneadas, y la dirección de diseño. Rellena marca, ciudad y cifras; genera la hero image
|
|
5
|
+
primero y pásala como referencia a cada clip.
|
|
6
|
+
|
|
7
|
+
## 1. Producto de lujo (relojes, joyería, audio, sneakers)
|
|
8
|
+
- Shots: (1) orbit 360 lento del producto flotando en vacío negro, rim light dramático;
|
|
9
|
+
(2) macro fly-through sobre el detalle (dial, textura, costura); (3) exploded assembly,
|
|
10
|
+
el producto se arma desde componentes flotantes.
|
|
11
|
+
- Secciones: hero con el nombre en tracking, historia, macro-detalles, vista técnica con
|
|
12
|
+
spec callouts, edición limitada + CTA de waitlist.
|
|
13
|
+
- Diseño: fondo off-black, un acento (oro/champagne), serif display alto contraste + sans
|
|
14
|
+
minimal. Copy: callado, caro, muy pocas palabras.
|
|
15
|
+
|
|
16
|
+
## 2. Experiencia / storytelling (turismo, expediciones, museos)
|
|
17
|
+
- Shots encadenados (aquí sí conviene el chaining best-effort): un descenso o recorrido
|
|
18
|
+
por zonas, cada clip termina donde arranca el siguiente. HUD fijo (profundidad, tiempo).
|
|
19
|
+
- Secciones: hero con pregunta, un dato por zona, specs, CTA de reserva.
|
|
20
|
+
- Diseño: color-grade que evoluciona con el scroll, un acento luminoso, sans técnica con
|
|
21
|
+
micro-detalles tipo instrumento.
|
|
22
|
+
|
|
23
|
+
## 3. Portafolio personal (creadores, freelancers, consultores)
|
|
24
|
+
- Sube una foto tuya bien iluminada de frente como referencia de identidad en cada clip.
|
|
25
|
+
- Shots: (1) orbit 360 alrededor de ti, brazos cruzados, rim light; (2) tú entre pantallas
|
|
26
|
+
holográficas con tu trabajo, push-in lento; (3) caminas hacia cámara, pose final.
|
|
27
|
+
- Secciones: nombre en display gigante letra por letra, strip de stats que cuentan al
|
|
28
|
+
scroll, 3 pilares, grid de trabajo con hover, CTA + socials.
|
|
29
|
+
- Diseño: fondo tinta, un acento, display condensado bold, grano sutil.
|
|
30
|
+
|
|
31
|
+
## 4. E-commerce / streetwear (drops, merch, ediciones limitadas)
|
|
32
|
+
- Shots: (1) modelo camina hacia cámara entre niebla, el viento mueve la tela; (2) spins
|
|
33
|
+
1:1 de cada prenda en maniquí invisible, 360 limpio; (3) macro de costura y cierre.
|
|
34
|
+
- Secciones: hero scroll-scrub del walk + countdown, grid de producto (cards que autoplay
|
|
35
|
+
su spin en hover), manifiesto de calidad, captura de email para tallas agotadas.
|
|
36
|
+
- Diseño: gris concreto + negro mate, un acento ácido, condensada brutalista.
|
|
37
|
+
|
|
38
|
+
## 5. Restaurante / cafe / bar (LOCAL, vendible $2k a $5k)
|
|
39
|
+
- Shots: (1) macro slow-motion de la proteína sobre fuego, brasas subiendo; (2) dolly lento
|
|
40
|
+
por el salón en hora dorada; (3) cenital de un plato emplatándose, vapor subiendo.
|
|
41
|
+
- Secciones: hero full-bleed scrub del fuego, historia breve, menú en dos columnas con
|
|
42
|
+
precios, reservación con formulario de fecha/party-size.
|
|
43
|
+
- Diseño: fondo casi negro, crema cálida, acento ámbar, grano de película, parallax lento.
|
|
44
|
+
Móvil: menú colapsa a una columna elegante. Usa las fotos reales del negocio.
|
|
45
|
+
|
|
46
|
+
## 6. Real estate (realtors, desarrollos, rentas vacacionales, hoteles)
|
|
47
|
+
- Shots encadenados en un tour continuo: (1) drone que curva alrededor de la torre al
|
|
48
|
+
atardecer; (2) del elevador al living; (3) cocina y suite principal; (4) terraza de noche,
|
|
49
|
+
alberca infinita reflejando el skyline.
|
|
50
|
+
- Secciones: hero, strip de facts (recámaras/baños/m2), galería, amenidades con reveals,
|
|
51
|
+
precio, "Request a Private Showing" con card del agente.
|
|
52
|
+
- Diseño: fondo tinta, acento champagne-gold, serif delgado, mucho whitespace. Usa las
|
|
53
|
+
fotos reales de la propiedad como start frames.
|
|
54
|
+
|
|
55
|
+
## 7. Automotriz / producto grande (autos, drones, bikes, maquinaria)
|
|
56
|
+
- Shots encadenados del producto moviéndose por terreno real, no en estudio: (1) reveal en
|
|
57
|
+
desierto al amanecer; (2) low tracking shot lanzándose; (3) cañón a velocidad; (4) modo
|
|
58
|
+
noche, solo su firma de luz.
|
|
59
|
+
- Secciones: hero con el nombre ultrawide, stats que cuentan al scroll, diseño con macro
|
|
60
|
+
stills, sección night-mode, teaser de configurador, CTA de reserva.
|
|
61
|
+
- Diseño: negro sobre negro, acento cian eléctrico, condensada ultrawide, motion blur sutil.
|
|
62
|
+
|
|
63
|
+
## 8. SaaS / app (software, herramientas AI, startups)
|
|
64
|
+
- Shots: (1) partículas de datos que se ensamblan en un dashboard flotante que "late";
|
|
65
|
+
(2) macro sobre charts holográficos, una anomalía roja se enciende; (3) el dashboard en
|
|
66
|
+
una laptop en oficina minimal luminosa, todo bajo control.
|
|
67
|
+
- Secciones: hero donde el dashboard se construye al scroll, logo strip de social proof,
|
|
68
|
+
3 bloques de feature, contadores de métricas, screenshot real del producto en mockup de
|
|
69
|
+
navegador, tabla de pricing (tier medio destacado), FAQ, CTA final.
|
|
70
|
+
- Diseño: hero casi negro que funde a blanco para el body, un acento violeta, sans
|
|
71
|
+
geométrica, cards glassmorphism. Combo de credibilidad: hero generado + screenshots reales.
|
|
72
|
+
|
|
73
|
+
## 9. Agencia / estudio creativo
|
|
74
|
+
- Shots: (1) tinta negra floreciendo en agua en slow motion, con destellos de oro;
|
|
75
|
+
(2) showreel: posters y pantallas con tipografía bold deslizándose por paredes de galería;
|
|
76
|
+
(3) siluetas de un equipo pequeño trabajando de noche, bokeh de ciudad por la ventana.
|
|
77
|
+
- Secciones: hero con la tinta detrás del nombre en display enorme, manifiesto kinético
|
|
78
|
+
(una palabra por paso de scroll), grid de casos con hover-video, servicios en dos columnas
|
|
79
|
+
editoriales, equipo, footer sobredimensionado con CTA.
|
|
80
|
+
- Diseño: negro puro + hueso, oro usado exactamente 3 veces en todo el sitio, mezcla de un
|
|
81
|
+
display brutalista con un serif refinado. Cursor = punto de oro con estela.
|
|
82
|
+
|
|
83
|
+
## 10. Gym / fitness (LOCAL, vendible $2k+)
|
|
84
|
+
- Shots: (1) atleta choca manos con tiza en gym oscuro, la nube de tiza florece en un haz de
|
|
85
|
+
luz cenital; (2) macro tracking por una barra cargada, textura de knurling y tiza;
|
|
86
|
+
(3) corredor en pista al amanecer, aliento visible, cámara baja y rápida al lado.
|
|
87
|
+
- Secciones: hero scrub de la nube de tiza, filosofía (una línea por paso de scroll), grid
|
|
88
|
+
de programas con hover, coaches, strip de resultados con contadores, pricing (3 tiers,
|
|
89
|
+
medio destacado), horario + mapa + formulario.
|
|
90
|
+
- Diseño: fondo carbón, tipo hueso, un acento rojo sangre, display industrial condensado,
|
|
91
|
+
grano y viñeta en toda la imagen. Móvil: programas en cards swipeables. Usa fotos reales
|
|
92
|
+
del espacio y su horario y precios.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reasoning-discipline
|
|
3
|
+
description: Eleva a CUALQUIER modelo (Opus/Sonnet/Haiku/Fable) a operar con la disciplina de un modelo fuerte, vía 5 compuertas (scoping, evidencia, adversarial, verificación, reporte) + ruteo por modelo/esfuerzo. USAR antes de una tarea multi-paso difícil, un build, una auditoría, una migración, o cuando el usuario pida "modo riguroso", "fable mode", "piensa/razona con disciplina", "no me falles", "verifica antes de terminar", o cuando vayas a delegar a subagentes. Es la versión de UN-solo-agente del protocolo de comité.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Reasoning Discipline: el proceso es el foso, no el modelo
|
|
7
|
+
|
|
8
|
+
Regla de fondo (validada, Brain #6648): no puedes quedarte con la INTELIGENCIA de
|
|
9
|
+
un modelo, pero sí con su PROCESO. Lo que produce salidas confiables es el harness,
|
|
10
|
+
las compuertas y los loops, no el modelo. Esta disciplina eleva a un modelo barato,
|
|
11
|
+
pero NO cambia su capacidad de base: no la sobre-vendas como un upgrade de inteligencia.
|
|
12
|
+
|
|
13
|
+
Cárgala cuando la tarea sea cara de equivocar. Para trabajo trivial, no estorbes.
|
|
14
|
+
|
|
15
|
+
## Las 5 compuertas (no las saltes)
|
|
16
|
+
|
|
17
|
+
1. **SCOPING (antes de tocar nada).** No solo listar pasos: hacer de abogado del
|
|
18
|
+
diablo sobre lo desconocido. ¿Qué podría salir mal? ¿Qué supuestos no verifiqué?
|
|
19
|
+
Escribe el plan por etapas, numeradas, cada una con su condición de "pasa".
|
|
20
|
+
2. **EVIDENCIA antes de razonar.** Lee el archivo, corre el grep, mira el esquema
|
|
21
|
+
real ANTES de teorizar. No razones sobre lo que crees que dice el código; ábrelo.
|
|
22
|
+
3. **RAZONAR ADVERSARIALMENTE.** Ataca tu propia solución. ¿Qué caso la rompe?
|
|
23
|
+
¿Qué cifra inventé? ¿Qué claim no es objetivamente verificable? Ante la duda,
|
|
24
|
+
asume que está mal hasta probar lo contrario.
|
|
25
|
+
4. **VERIFICAR antes de declarar hecho.** Cada etapa define una condición que un
|
|
26
|
+
ARTEFACTO EXTERNO satisface (un test que pasa, un grep que devuelve la línea, un
|
|
27
|
+
`execute_orm` que da el número, un screenshot que se ve bien). "Se ve bien" no es
|
|
28
|
+
verificación; un artefacto sí. Re-verifica cada "listo" antes de decirlo.
|
|
29
|
+
5. **REPORTAR / CALIBRAR.** Di qué falló, qué quedó sin verificar, qué es supuesto
|
|
30
|
+
vs. hecho. Honestidad sobre impresión. El reporte es parte del trabajo.
|
|
31
|
+
|
|
32
|
+
Esto es el `feedback_committee_operating_protocol` en formato de un-solo-agente.
|
|
33
|
+
Cuando la tarea amerite paralelismo o red-team, escala al comité (Workflow).
|
|
34
|
+
|
|
35
|
+
## Principios operativos (del system prompt filtrado de Fable 5)
|
|
36
|
+
|
|
37
|
+
Fuente CC0 pública (`asgeirtj/system_prompts_leaks`, corroborada por
|
|
38
|
+
`jujumilk3/leaked-system-prompts`). Citar como filtrado, no confirmado por Anthropic.
|
|
39
|
+
Cuatro reglas listas para usar:
|
|
40
|
+
|
|
41
|
+
- **Verifica antes de confiar en la memoria.** "El reconocimiento parcial del training
|
|
42
|
+
no es conocimiento actual." Si lo recuerdas pero no lo comprobaste, compruébalo.
|
|
43
|
+
- **Comprueba que el archivo exista.** Que el prompt implique que un archivo está
|
|
44
|
+
presente no significa que lo esté (el usuario pudo olvidar subirlo). Revisa tú mismo.
|
|
45
|
+
- **Responde primero, pregunta después.** Atiende una consulta ambigua ANTES de pedir
|
|
46
|
+
aclaración. Máximo UNA pregunta por respuesta.
|
|
47
|
+
- **Escala el esfuerzo a la tarea.** 1 llamada de herramienta para un dato simple,
|
|
48
|
+
3 a 5 para una tarea media, 5 a 10 para research o comparación honda.
|
|
49
|
+
|
|
50
|
+
## Calibración de esfuerzo (importante)
|
|
51
|
+
|
|
52
|
+
Más esfuerzo NO es siempre mejor. El esfuerzo bajo de un modelo top suele igualar al
|
|
53
|
+
esfuerzo alto del tier siguiente. Subir a `xhigh`/`max` a veces EMPEORA: el modelo se
|
|
54
|
+
sobre-piensa y se contradice. Default sensato: `high`. Sube solo si la tarea lo exige
|
|
55
|
+
y estás dispuesto a pagar la latencia y el riesgo de overthinking.
|
|
56
|
+
|
|
57
|
+
## Ruteo de modelo (delega el trabajo mecánico al tier barato)
|
|
58
|
+
|
|
59
|
+
Palanca NATIVA de Claude Code (sin código):
|
|
60
|
+
- `CLAUDE_CODE_SUBAGENT_MODEL` rutea TODOS los subagentes a un tier barato.
|
|
61
|
+
- Cada subagente acepta el campo `model:` (incluido `inherit`).
|
|
62
|
+
|
|
63
|
+
Policy de delegación:
|
|
64
|
+
| Trabajo | Tier | Por qué |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| Razonamiento real, diseño, review de código, síntesis | Opus / Fable | Necesita juicio |
|
|
67
|
+
| Variantes creativas, transformaciones con contexto | Sonnet | Buen costo/juicio |
|
|
68
|
+
| Bulk mecánico: extracción, clasificación, sweeps, scouts | Haiku | ~3× más barato/token |
|
|
69
|
+
|
|
70
|
+
Empareja el tier a la DIFICULTAD de la etapa, no al hábito.
|
|
71
|
+
|
|
72
|
+
**Corrección de honestidad (no propagar el mito).** La frase de la comunidad
|
|
73
|
+
"orquestador Opus + scouts Haiku = misma calidad, 3× más barato" NO tiene benchmark.
|
|
74
|
+
El dato publicado de Anthropic (`anthropic.com/engineering/multi-agent-research-system`)
|
|
75
|
+
es Opus-líder + Sonnet-subagentes = +90.2% en su eval de research, a ~15× MÁS tokens.
|
|
76
|
+
O sea: el patrón orquestador-worker COMPRA calidad a mayor costo de tokens. "Haiku
|
|
77
|
+
~3× más barato por token" es cierto; el combinado "misma calidad Y 3× más barato" no.
|
|
78
|
+
Cuando cites el fundamento de nuestros comités, usa el número real (Opus+Sonnet,
|
|
79
|
+
+90.2%, 15× tokens), nunca el mito del ahorro.
|
|
80
|
+
|
|
81
|
+
## Endurecer una compuerta con un hook (opcional)
|
|
82
|
+
|
|
83
|
+
Una regla enforzada por un hook real vence a la prosa. Igual que el `ai-slop-lint`
|
|
84
|
+
que falla el build, se puede enforzar una compuerta (p. ej. "un test nunca nombra una
|
|
85
|
+
ruta de datos productiva") con un hook `PostToolUse` que bloquee la violación. Patrón:
|
|
86
|
+
un solo gate mecánico, no todo el skill. Si vas a construir uno, documenta qué cazá,
|
|
87
|
+
qué salta y qué NO cubre (los blind spots) en el propio hook.
|
|
88
|
+
|
|
89
|
+
## Al cerrar
|
|
90
|
+
|
|
91
|
+
Si esto fue un plan o un comité, captura sus perspectivas al Brain (`capture_learning`)
|
|
92
|
+
antes de terminar. El análisis de un plan es conocimiento durable; perderlo es el error.
|