\documentclass[10pt,a4paper,openany]{book}
\usepackage{tocloft}

% Motor y lengua
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{spanish}
\IfFontExistsTF{Georgia}
  {\setmainfont{Georgia}}
  {\setmainfont{TeX Gyre Schola}}
\IfFontExistsTF{Helvetica Neue}
  {\setsansfont{Helvetica Neue}}
  {\setsansfont{TeX Gyre Heros}}
\IfFontExistsTF{Menlo}
  {\setmonofont[Scale=0.82]{Menlo}}
  {\setmonofont[Scale=0.86]{Latin Modern Mono}}

% Página y lectura
\usepackage[
  a4paper,
  inner=23mm,
  outer=19mm,
  top=20mm,
  bottom=23mm,
  headheight=20pt,
  headsep=8mm,
  footskip=12mm
]{geometry}
\usepackage{microtype}
\usepackage{setspace}
\usepackage{parskip}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.54em plus 0.12em minus 0.08em}
\setstretch{1.08}
\emergencystretch=2.5em
\raggedbottom

% Color e identidad Aulafy
\usepackage[table]{xcolor}
\definecolor{BrandViolet}{HTML}{7C3AED}
\definecolor{BrandFuchsia}{HTML}{D946EF}
\definecolor{BrandCyan}{HTML}{0891B2}
\definecolor{TextDark}{HTML}{241B38}
\definecolor{TextMuted}{HTML}{596275}
\definecolor{Panel}{HTML}{F8F6FF}
\definecolor{PanelStrong}{HTML}{F1EDFF}
\definecolor{Border}{HTML}{DDD6FE}
\definecolor{CodeBg}{HTML}{F1EFFB}
\definecolor{SignalGreen}{HTML}{047857}
\definecolor{SignalGreenBg}{HTML}{ECFDF5}
\definecolor{SignalAmber}{HTML}{B45309}
\definecolor{SignalAmberBg}{HTML}{FFFBEB}
\definecolor{SignalRose}{HTML}{BE123C}
\definecolor{SignalRoseBg}{HTML}{FFF1F2}
\color{TextDark}

% Gráficos y cajas
\usepackage{graphicx}
\graphicspath{{./}}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\usepackage[most]{tcolorbox}
\tcbuselibrary{breakable,skins}

% Estructura y navegación
\usepackage{titlesec}
\usepackage{needspace}
\usepackage{etoolbox}
\usepackage{enumitem}
\usepackage{fancyhdr}
\usepackage{bookmark}
\usepackage{xurl}
\usepackage{hyperref}
\hypersetup{
  colorlinks=true,
  linkcolor=BrandViolet,
  urlcolor=BrandCyan,
  citecolor=BrandViolet,
  pdftitle={Codex desde cero: trabaja con archivos, automatiza tareas y construye proyectos},
  pdfauthor={Aulafy},
  pdfsubject={Manual práctico de Codex desde cero},
  pdfkeywords={Codex, OpenAI, Aulafy, inteligencia artificial, curso, manual},
  pdflang={es-ES}
}
\urlstyle{same}

% Tablas
\usepackage{longtable,booktabs,array,calc}
\usepackage{caption}
\newcounter{none}
\usepackage{multirow}
\usepackage{colortbl}
\setlength{\LTleft}{0pt}
\setlength{\LTright}{0pt}
\setlength{\tabcolsep}{4pt}
\renewcommand{\arraystretch}{1.28}
\arrayrulecolor{Border}
\AtBeginEnvironment{longtable}{\small\sffamily\color{TextDark}}

% Código y compatibilidad con Pandoc
\usepackage{fancyvrb}
\usepackage{fvextra}
\usepackage{upquote}
\usepackage{newunicodechar}
\usepackage{amssymb}
\newunicodechar{☐}{\ensuremath{\square}}
\newunicodechar{☑}{\ensuremath{\boxtimes}}
\newunicodechar{→}{\ensuremath{\rightarrow}}
\newunicodechar{≥}{\ensuremath{\geq}}
\newunicodechar{≤}{\ensuremath{\leq}}
\providecommand{\tightlist}{\setlength{\itemsep}{0.18em}\setlength{\parskip}{0pt}}
\providecommand{\passthrough}[1]{#1}
\providecommand{\pandocbounded}[1]{#1}
\providecommand{\real}[1]{#1}

\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\newenvironment{Shaded}{}{}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\RecustomVerbatimEnvironment{Highlighting}{Verbatim}{
  commandchars=\\\{\},
  breaklines=true,
  breakanywhere=true,
  fontsize=\footnotesize
}
\renewenvironment{Shaded}
  {\begin{tcolorbox}[
    enhanced,
    breakable,
    colback=CodeBg,
    colframe=Border,
    boxrule=0.5pt,
    arc=2mm,
    left=3mm,
    right=3mm,
    top=2.2mm,
    bottom=2.2mm,
    before skip=0.8em,
    after skip=0.9em
  ]}
  {\end{tcolorbox}}

% Cajas pedagógicas
\newtcolorbox{metabox}{
  enhanced,
  breakable,
  colback=Panel,
  colframe=Border,
  boxrule=0.5pt,
  borderline west={2.2pt}{0pt}{BrandViolet},
  arc=1.5mm,
  left=3mm,right=3mm,top=2mm,bottom=2mm,
  before skip=0.45em,after skip=0.9em,
  fontupper=\small\sffamily\color{TextMuted}
}
\newtcolorbox{warningbox}{
  enhanced,
  breakable,
  colback=SignalRoseBg,
  colframe=SignalRose!28,
  boxrule=0.5pt,
  borderline west={2.6pt}{0pt}{SignalRose},
  arc=1.5mm,
  left=3mm,right=3mm,top=2.2mm,bottom=2.2mm,
  before skip=0.8em,after skip=0.9em,
  fontupper=\small\sffamily\color{TextDark}
}
\newtcolorbox{successbox}{
  enhanced,
  breakable,
  colback=SignalGreenBg,
  colframe=SignalGreen!26,
  boxrule=0.5pt,
  borderline west={2.6pt}{0pt}{SignalGreen},
  arc=1.5mm,
  left=3mm,right=3mm,top=2.2mm,bottom=2.2mm,
  before skip=0.8em,after skip=0.9em,
  fontupper=\small\sffamily\color{TextDark}
}
\newtcolorbox{practicebox}{
  enhanced,
  breakable,
  colback=PanelStrong,
  colframe=BrandViolet!28,
  boxrule=0.5pt,
  borderline west={2.6pt}{0pt}{BrandViolet},
  arc=1.5mm,
  left=3mm,right=3mm,top=2.2mm,bottom=2.2mm,
  before skip=0.8em,after skip=0.9em,
  fontupper=\small\sffamily\color{TextDark}
}
\newtcolorbox{tipbox}{
  enhanced,
  breakable,
  colback=cyan!4,
  colframe=BrandCyan!30,
  boxrule=0.5pt,
  borderline west={2.6pt}{0pt}{BrandCyan},
  arc=1.5mm,
  left=3mm,right=3mm,top=2.2mm,bottom=2.2mm,
  before skip=0.8em,after skip=0.9em,
  fontupper=\small\sffamily\color{TextDark}
}

% Títulos
\setcounter{secnumdepth}{-1}
\setcounter{tocdepth}{1}
\titleformat{\chapter}[display]
  {\sffamily\bfseries\color{TextDark}\raggedright}
  {\color{BrandViolet}\small\MakeUppercase{Aulafy · Manual práctico}}
  {0.55em}
  {\fontsize{26}{31}\selectfont}
  [\vspace{0.55em}{\color{Border}\titlerule[0.8pt]}]
\titlespacing*{\chapter}{0pt}{-10mm}{10mm}

\titleformat{\section}
  {\sffamily\bfseries\color{TextDark}\raggedright\fontsize{18}{22}\selectfont}
  {}
  {0pt}
  {}
  [\vspace{0.25em}{\color{BrandViolet}\titlerule[1.6pt]}]
\titlespacing*{\section}{0pt}{2.0em}{0.9em}

\titleformat{\subsection}
  {\sffamily\bfseries\color{BrandViolet}\fontsize{12.5}{15}\selectfont}
  {}
  {0pt}
  {}
\titlespacing*{\subsection}{0pt}{1.65em}{0.55em}

\titleformat{\subsubsection}
  {\sffamily\bfseries\color{BrandCyan}\fontsize{10.5}{13}\selectfont}
  {}
  {0pt}
  {}
\titlespacing*{\subsubsection}{0pt}{1.25em}{0.4em}

\pretocmd{\subsection}{\Needspace{5\baselineskip}}{}{}
\pretocmd{\subsubsection}{\Needspace{4\baselineskip}}{}{}

% Listas, citas y enlaces
\setlist[itemize]{label=\textcolor{BrandViolet}{\rule{1.2mm}{1.2mm}},leftmargin=5.2mm,itemsep=0.24em,topsep=0.35em}
\setlist[enumerate]{leftmargin=6.5mm,itemsep=0.28em,topsep=0.35em}
\renewenvironment{quote}
  {\begin{tcolorbox}[
    enhanced,breakable,colback=Panel,colframe=Border,boxrule=0.4pt,
    borderline west={2.4pt}{0pt}{BrandFuchsia},arc=1mm,
    left=3mm,right=3mm,top=2mm,bottom=2mm,
    before skip=0.8em,after skip=0.8em,
    fontupper=\itshape\color{TextMuted}
  ]}
  {\end{tcolorbox}}

% Encabezados y pies
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE]{\sffamily\footnotesize\color{TextMuted}\leftmark}
\fancyhead[RO]{\sffamily\footnotesize\color{TextMuted}Codex desde cero}
\fancyfoot[LE,RO]{\sffamily\bfseries\color{BrandViolet}\thepage}
\fancyfoot[LO,RE]{\sffamily\scriptsize\color{TextMuted}aulafy.net · Edición 2026}
\renewcommand{\headrulewidth}{0.35pt}
\renewcommand{\headrule}{\hbox to\headwidth{\color{Border}\leaders\hrule height \headrulewidth\hfill}}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\fancypagestyle{plain}{
  \fancyhf{}
  \fancyfoot[LE,RO]{\sffamily\bfseries\color{BrandViolet}\thepage}
  \fancyfoot[LO,RE]{\sffamily\scriptsize\color{TextMuted}aulafy.net · Edición 2026}
  \renewcommand{\headrulewidth}{0pt}
}

% Índice
\AtBeginDocument{\renewcommand{\contentsname}{Mapa del manual}}
\renewcommand{\cftchapfont}{\sffamily\bfseries\color{TextDark}}
\renewcommand{\cftchappagefont}{\sffamily\bfseries\color{BrandViolet}}
\renewcommand{\cftsecfont}{\sffamily\small\color{TextMuted}}
\renewcommand{\cftsecpagefont}{\sffamily\small\color{TextMuted}}
\setlength{\cftbeforechapskip}{0.72em}
\setlength{\cftbeforesecskip}{0.08em}

\begin{document}
\hypersetup{pageanchor=false}

% Portada
\begingroup
\thispagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
  \shade[left color=BrandViolet,right color=BrandCyan]
    (current page.south west) rectangle (current page.north east);
  \foreach \x in {0,1,...,14}{
    \draw[white,opacity=0.055,line width=0.3pt]
      ($(current page.south west)+(\x*15mm,0)$) -- ($(current page.north west)+(\x*15mm,0)$);
  }
  \foreach \y in {0,1,...,21}{
    \draw[white,opacity=0.055,line width=0.3pt]
      ($(current page.south west)+(0,\y*14mm)$) -- ($(current page.south east)+(0,\y*14mm)$);
  }
  \fill[BrandFuchsia,opacity=0.22]
    ($(current page.north east)+(-12mm,-18mm)$) circle (42mm);
  \fill[white,opacity=0.08]
    ($(current page.south west)+(12mm,16mm)$) circle (48mm);
\end{tikzpicture}

\vspace*{8mm}
\begin{minipage}{\textwidth}
  \colorbox{white}{\includegraphics[width=24mm]{aulafy-icon-512.png}}
  \hfill
  {\sffamily\bfseries\color{white}\fontsize{13}{16}\selectfont AULAFY}
\end{minipage}

\vfill

{\sffamily\bfseries\color{white}\fontsize{13}{16}\selectfont
MANUAL PRÁCTICO · DE CERO A PROYECTO\par}
\vspace{8mm}
{\sffamily\bfseries\color{white}\fontsize{39}{44}\selectfont
Codex\par desde cero\par}
\vspace{8mm}
{\sffamily\color{white}\fontsize{18}{24}\selectfont
Trabaja con archivos, automatiza tareas\par y construye proyectos\par}

\vfill

\begin{tcolorbox}[
  enhanced,
  width=\textwidth,
  colback=white,
  opacityback=0.13,
  colframe=white,
  opacityframe=0.25,
  boxrule=0.5pt,
  arc=2mm,
  left=4mm,right=4mm,top=3mm,bottom=3mm
]
{\sffamily\color{white}\fontsize{10.5}{15}\selectfont
20 lecciones · Ejemplos resueltos · Casos integrales · Paquete de práctica\par
Nivel cero absoluto a intermedio · Puente técnico opcional}
\end{tcolorbox}

\vspace{8mm}
{\sffamily\color{white}\small Edición revisada · Julio de 2026\hfill
\href{https://www.aulafy.net/}{\textcolor{white}{aulafy.net}}}
\par
\endgroup

\clearpage
\pagenumbering{roman}
\hypersetup{pageanchor=true}

% Página editorial
\thispagestyle{plain}
\vspace*{18mm}
{\sffamily\bfseries\color{BrandViolet}\fontsize{11}{14}\selectfont AULAFY · EDICIÓN EDUCATIVA\par}
\vspace{4mm}
{\sffamily\bfseries\fontsize{24}{29}\selectfont Codex desde cero\par}
\vspace{3mm}
{\sffamily\color{TextMuted}\large Trabaja con archivos, automatiza tareas y construye proyectos\par}

\vspace{12mm}
\begin{tcolorbox}[
  enhanced,colback=Panel,colframe=Border,boxrule=0.5pt,arc=2mm,
  left=4mm,right=4mm,top=4mm,bottom=4mm
]
\sffamily\small
\textbf{Versión del contenido:} 2, ampliada y aprobada.\\
\textbf{Revisión documental:} 14 de julio de 2026.\\
\textbf{Nivel:} cero absoluto a intermedio, con puente técnico opcional.\\
\textbf{Duración orientativa:} 14-20 horas más proyecto final.\\
\textbf{Plataformas:} macOS, Windows y Linux según la superficie utilizada.
\end{tcolorbox}

\vfill
{\small\color{TextMuted}
Este manual enseña a utilizar Codex con alcance limitado, revisión humana y evidencia. Las funciones de producto, disponibilidad e interfaces pueden cambiar. Consulta las fuentes oficiales enlazadas y la fecha de revisión antes de impartir o publicar una nueva edición.\par

Los nombres, correos y situaciones del paquete de práctica son ficticios. No utilices información personal ni originales irremplazables durante el aprendizaje.\par}
\vspace{8mm}
{\sffamily\footnotesize\color{TextMuted}Preparado para Aulafy ·
\href{https://www.aulafy.net/}{https://www.aulafy.net/}}
\clearpage

% Guía visual
\thispagestyle{plain}
{\sffamily\bfseries\fontsize{22}{27}\selectfont Cómo aprender con este manual\par}
\vspace{3mm}
{\color{TextMuted}Cada práctica utiliza el mismo ciclo. Si falta un paso, el resultado todavía no está listo.\par}
\vspace{8mm}

\begin{tikzpicture}[node distance=4mm and 3mm, every node/.style={font=\sffamily}]
  \node[draw=BrandViolet,fill=PanelStrong,rounded corners=2mm,minimum width=37mm,minimum height=20mm,text width=31mm,align=center] (a) {\textbf{1. Encargar}\\\footnotesize Resultado, contexto y límites};
  \node[draw=BrandFuchsia,fill=SignalRoseBg,rounded corners=2mm,minimum width=37mm,minimum height=20mm,text width=31mm,align=center,right=of a] (b) {\textbf{2. Observar}\\\footnotesize Plan, herramientas y permisos};
  \node[draw=BrandCyan,fill=cyan!4,rounded corners=2mm,minimum width=37mm,minimum height=20mm,text width=31mm,align=center,below=of b] (c) {\textbf{3. Comprobar}\\\footnotesize Resultado, cambios y pruebas};
  \node[draw=SignalGreen,fill=SignalGreenBg,rounded corners=2mm,minimum width=37mm,minimum height=20mm,text width=31mm,align=center,left=of c] (d) {\textbf{4. Explicar}\\\footnotesize Evidencia, límites y recuperación};
  \draw[->,very thick,BrandViolet] (a) -- (b);
  \draw[->,very thick,BrandFuchsia] (b) -- (c);
  \draw[->,very thick,BrandCyan] (c) -- (d);
  \draw[->,very thick,SignalGreen] (d) -- (a);
\end{tikzpicture}

\vspace{10mm}
\begin{tabular}{@{}p{30mm}p{105mm}@{}}
\textcolor{BrandViolet}{\sffamily\bfseries PRÁCTICA} & Actividad para realizar, con archivos y resultado observable.\\[2mm]
\textcolor{SignalRose}{\sffamily\bfseries ALARMA} & Situación en la que debes detenerte y revisar antes de continuar.\\[2mm]
\textcolor{SignalGreen}{\sffamily\bfseries TERMINADO} & Evidencia mínima para considerar completada una tarea.\\[2mm]
\textcolor{BrandCyan}{\sffamily\bfseries COMPROBACIÓN} & Control independiente que no depende de aceptar la respuesta del agente.\\
\end{tabular}

\vfill
\begin{tcolorbox}[
  enhanced,colback=Panel,colframe=Border,boxrule=0.5pt,arc=2mm,
  borderline west={2.6pt}{0pt}{BrandViolet},left=4mm,right=4mm,top=3mm,bottom=3mm
]
\small\sffamily
\textbf{Consejo editorial:} empieza con la ruta esencial si es tu primer contacto. Completa la ruta general para usar Codex en tareas cotidianas y añade la ruta técnica cuando necesites repositorios, CLI o IDE.
\end{tcolorbox}
\clearpage

\renewcommand{\contentsname}{Mapa del manual}
\tableofcontents
\clearpage
\pagenumbering{arabic}

\chapter{Presentación del curso}\label{presentaciuxf3n-del-curso}

Codex es un agente de inteligencia artificial de OpenAI capaz de
trabajar con archivos, ejecutar herramientas, comprobar resultados y
realizar tareas de software. No necesitas saber programar para aprender
a dirigirlo, revisar lo que hace y construir proyectos pequeños. Sí
necesitas comprender tres cosas: qué herramienta elegir, qué acceso
estás concediendo y cómo comprobar el resultado antes de utilizarlo.

Este curso empieza desde cero. Primero aprenderás a trabajar en una
carpeta de práctica sin poner en riesgo tus documentos. Después
utilizarás lenguaje natural para organizar información, crear archivos,
investigar, revisar páginas web y automatizar tareas. Las últimas
lecciones ofrecen un puente opcional hacia la terminal, el IDE y el
curso «Codex para programadores».

El objetivo no es que aceptes todo lo que produce una IA. El objetivo es
que puedas encargar un resultado, observar el proceso, detectar límites,
pedir correcciones y conservar evidencia de lo que realmente se ha
comprobado.

\subsection{Al terminar serás capaz
de}\label{al-terminar-seruxe1s-capaz-de}

\begin{itemize}
\tightlist
\item
  Elegir entre Chat, ChatGPT Work y Codex según el resultado que
  necesitas.
\item
  Utilizar la aplicación de escritorio en macOS o Windows, y Codex CLI o
  la extensión de IDE en Linux.
\item
  Dar acceso únicamente a una carpeta de trabajo y comprender los
  permisos básicos.
\item
  Escribir encargos claros sin aprender una sintaxis especial.
\item
  Trabajar con archivos, carpetas, capturas, datos y páginas web.
\item
  Utilizar el navegador y Computer Use con límites seguros.
\item
  Construir una web sencilla sin escribir el código manualmente.
\item
  Automatizar una tarea repetitiva con vista previa y recuperación.
\item
  Organizar proyectos y tareas sin mezclar contextos.
\item
  Crear instrucciones reutilizables y elegir entre skills, plugins y
  MCP.
\item
  Programar tareas que produzcan resultados revisables.
\item
  Decidir cuándo avanzar hacia Git, CLI, IDE y flujos profesionales.
\end{itemize}

\subsection{Requisitos reales}\label{requisitos-reales}

\begin{itemize}
\tightlist
\item
  Poder crear una carpeta y copiar archivos.
\item
  Una cuenta de ChatGPT con acceso a las funciones que quieras utilizar.
\item
  Conexión a internet para iniciar sesión y utilizar el servicio.
\item
  En macOS o Windows, la aplicación de escritorio de ChatGPT.
\item
  En Linux, un navegador para ChatGPT Work y, para Codex local, una
  terminal o un editor compatible.
\end{itemize}

No necesitas Git, un repositorio, una clave API ni experiencia
programando.

\subsection{Cómo utilizar el curso}\label{cuxf3mo-utilizar-el-curso}

Las lecciones 1 a 16 forman la ruta general. La 17 presenta funciones
reutilizables y la 18 enseña tareas programadas. La 19 es un puente
técnico opcional. La 20 ofrece proyectos finales según tu perfil.

Cada práctica utiliza una carpeta o archivos de entrenamiento. No
trabajes con originales irremplazables durante el aprendizaje. Si una
función no aparece en tu cuenta, lee la explicación, completa la
alternativa indicada y consulta la fuente oficial de disponibilidad.

\subsection{Qué incorpora esta versión
ampliada}\label{quuxe9-incorpora-esta-versiuxf3n-ampliada}

Esta versión no añade dificultad por añadir páginas. Añade apoyos para
que una misma explicación sirva a personas con experiencias muy
distintas:

\begin{itemize}
\tightlist
\item
  ejemplos completos, desde el encargo inicial hasta la comprobación
  final;
\item
  versiones deficientes y mejoradas de un mismo prompt;
\item
  alternativas para estudio, docencia, trabajo autónomo, creación y
  desarrollo;
\item
  preguntas de autoevaluación con respuesta razonada;
\item
  archivos de práctica que se pueden copiar literalmente;
\item
  casos integrales para unir varias lecciones;
\item
  una clínica de prompts para aprender a corregir encargos ambiguos;
\item
  criterios observables para saber si una práctica está terminada.
\end{itemize}

\subsection{Tres rutas posibles}\label{tres-rutas-posibles}

No todas las personas tienen que recorrer el curso de la misma manera.

\textbf{Ruta esencial - 5 a 7 horas.} Lecciones 1, 3, 4, 5, 6, 7, 13, 14
y 20. Enseña a utilizar Codex con seguridad, formular encargos claros,
revisar cambios y terminar un proyecto pequeño.

\textbf{Ruta general - 14 a 20 horas.} Lecciones 1 a 18 y un proyecto
final. Es la ruta recomendada para quien empieza desde cero y quiere
aplicar Codex a tareas reales sin depender de conocimientos técnicos.

\textbf{Ruta técnica - 18 a 26 horas.} Curso completo, incluida la
lección 19, las prácticas de Git y el proyecto técnico. Prepara el salto
hacia repositorios, terminal e IDE.

\subsection{Los cuatro personajes
guía}\label{los-cuatro-personajes-guuxeda}

Los ejemplos siguen a cuatro personas ficticias. No representan
categorías cerradas; sirven para mostrar cómo cambia un buen encargo
según el contexto.

\begin{itemize}
\tightlist
\item
  \textbf{Sol, estudiante y docente:} prepara materiales, ordena apuntes
  y diseña actividades.
\item
  \textbf{Marta, profesional autónoma:} organiza clientes, crea una web
  y automatiza seguimiento administrativo.
\item
  \textbf{Leo, creador e investigador:} compara fuentes, prepara
  contenidos y conserva trazabilidad.
\item
  \textbf{Dani, desarrollador principiante:} revisa un repositorio,
  modifica código y ejecuta comprobaciones.
\end{itemize}

\subsection{Método de estudio: encargar, observar, comprobar,
explicar}\label{muxe9todo-de-estudio-encargar-observar-comprobar-explicar}

En cada práctica sigue siempre el mismo ciclo:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Encargar:} describe el resultado, el contexto, los límites y
  la comprobación.
\item
  \textbf{Observar:} mira el plan, los archivos consultados, las
  herramientas y las solicitudes de permiso.
\item
  \textbf{Comprobar:} abre el resultado, compara los cambios y repite
  una verificación independiente.
\item
  \textbf{Explicar:} resume con tus propias palabras qué cambió, qué se
  comprobó y qué queda pendiente.
\end{enumerate}

Si no puedes explicar el resultado, todavía no está listo para un uso
importante.

\subsection{Convenciones de las
prácticas}\label{convenciones-de-las-pruxe1cticas}

\begin{itemize}
\tightlist
\item
  \textbf{Hazlo ahora:} actividad guiada que conviene ejecutar.
\item
  \textbf{Ejemplo resuelto:} una solución posible, no una fórmula
  obligatoria.
\item
  \textbf{Cambia una variable:} pequeña variación para evitar el
  aprendizaje mecánico.
\item
  \textbf{Señal de alarma:} situación en la que debes detenerte y
  revisar.
\item
  \textbf{Criterio de terminado:} evidencia mínima para considerar
  completada la actividad.
\item
  \textbf{Comprueba que lo has entendido:} preguntas con solución
  desplegable.
\end{itemize}

\chapter{Módulo 1. Orientarse antes de
actuar}\label{muxf3dulo-1.-orientarse-antes-de-actuar}

\clearpage

\section{Lección 1. Qué es Codex y qué no
es}\label{lecciuxf3n-1.-quuxe9-es-codex-y-quuxe9-no-es}

\begin{metabox}

\textbf{Tiempo:} 25 minutos\\
\textbf{Superficie:} cualquier superficie de ChatGPT\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender}

\begin{itemize}
\tightlist
\item
  Qué significa que Codex sea un agente.
\item
  La diferencia entre responder, crear un entregable y actuar sobre un
  proyecto.
\item
  Cuándo no debes utilizar Codex.
\end{itemize}

\subsection{Una explicación sin
jerga}\label{una-explicaciuxf3n-sin-jerga}

Un chatbot contesta a mensajes. Un agente puede además observar un
entorno, utilizar herramientas y avanzar durante varios pasos hacia un
resultado. En una tarea local, Codex puede leer los archivos de la
carpeta elegida, modificarlos si tiene permiso y ejecutar programas para
comprobar su trabajo.

Eso no convierte a Codex en una autoridad. Puede interpretar mal una
petición, utilizar una fuente incorrecta, cambiar más de lo necesario o
presentar como comprobado algo que no llegó a ejecutar. Tu papel
consiste en definir el resultado, limitar el alcance y revisar la
evidencia.

\subsection{El mapa que evita la mayoría de
confusiones}\label{el-mapa-que-evita-la-mayoruxeda-de-confusiones}

\begin{itemize}
\tightlist
\item
  \textbf{Chat:} preguntas, explicaciones, ideas, búsqueda y
  conversaciones rápidas.
\item
  \textbf{ChatGPT Work:} investigación y entregables revisables, como
  documentos, presentaciones, hojas de cálculo, PDF o Sites.
\item
  \textbf{Codex:} software y tareas técnicas que necesitan contexto de
  proyecto, archivos, comandos, pruebas o revisión de cambios.
\end{itemize}

Una persona no programadora puede utilizar Codex para construir una web
pequeña, transformar archivos o crear una herramienta local. Sin
embargo, si el resultado principal es un informe, una presentación o una
hoja de cálculo, empieza por Work. Elegir la superficie correcta forma
parte de hacer bien la tarea.

\subsection{Tres preguntas antes de
empezar}\label{tres-preguntas-antes-de-empezar}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Necesito una respuesta o conversación? Usa Chat.
\item
  ¿Necesito un archivo final visual que revisar? Usa Work.
\item
  ¿Necesito que el agente trabaje dentro de una carpeta o proyecto
  técnico? Usa Codex.
\end{enumerate}

\subsection{Práctica: clasifica
tareas}\label{pruxe1ctica-clasifica-tareas}

Elige Chat, Work o Codex:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  «Explícame la inflación con un ejemplo familiar».
\item
  «Crea una presentación de diez diapositivas a partir de estas notas».
\item
  «Revisa esta carpeta y construye una web para presentar mi servicio».
\item
  «Compara información actual de tres páginas y cita fuentes».
\item
  «Corrige el error de este proyecto y ejecuta sus pruebas».
\end{enumerate}

\textbf{Solución razonada:} 1 Chat; 2 Work; 3 Codex; 4 Chat o Work según
si quieres conversación o informe; 5 Codex.

\subsection{Encargo listo para copiar}\label{encargo-listo-para-copiar}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Quiero conseguir este resultado: [descríbelo]. Antes de empezar, dime si debo}
\NormalTok{usar Chat, ChatGPT Work o Codex. Explica la elección en lenguaje sencillo,}
\NormalTok{qué acceso necesitarías y qué tendría que revisar yo al final. No realices}
\NormalTok{ninguna acción todavía.}
\end{Highlighting}
\end{Shaded}

\subsection{Resultado esperado}\label{resultado-esperado}

Una recomendación de superficie, una explicación del acceso necesario y
una lista de comprobaciones. La respuesta no debe iniciar cambios.

\subsection{Comprobación y
recuperación}\label{comprobaciuxf3n-y-recuperaciuxf3n}

\begin{itemize}
\tightlist
\item
  Confirma que la recomendación responde a tu resultado y no solo a la
  herramienta disponible.
\item
  Si propone actuar, corrige: «Solo quiero orientación; no hagas
  cambios».
\item
  No hay nada que deshacer porque no se ha concedido acceso ni
  autorizado una acción.
\end{itemize}

\subsection{Error frecuente}\label{error-frecuente}

\textbf{Llamar Codex a todo.} Esto lleva a utilizar una superficie
técnica para un trabajo que Work puede presentar y revisar mejor.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar}

Escribe tres tareas tuyas y anota al lado qué superficie utilizarías y
por qué.

\subsection{Ejemplo resuelto: una petición, tres destinos
posibles}\label{ejemplo-resuelto-una-peticiuxf3n-tres-destinos-posibles}

Sol escribe: «Tengo treinta páginas de apuntes y quiero preparar el
examen». La petición todavía no permite elegir bien la herramienta. Al
concretarla aparecen tres trabajos diferentes:

\begin{itemize}
\tightlist
\item
  «Explícame este concepto con una analogía y hazme cinco preguntas» es
  una conversación: \textbf{Chat}.
\item
  «Convierte estos apuntes en una guía de estudio de ocho páginas, con
  portada y tablas» pide un entregable visual: \textbf{Work}.
\item
  «Lee los archivos de esta carpeta, detecta cuáles están duplicados y
  crea un pequeño buscador local» requiere actuar sobre un proyecto y
  comprobarlo: \textbf{Codex}.
\end{itemize}

El aprendizaje importante no es memorizar tres marcas. Es identificar el
verbo principal: \textbf{explicar}, \textbf{entregar} o \textbf{actuar}.

\begin{practicebox}

\textbf{Hazlo ahora.} Escribe tres tareas reales que tengas pendientes.
Para cada una, completa esta frase:

\end{practicebox}

\begin{quote}
Necesito \textbf{\emph{; el resultado será }}; lo consideraré correcto
cuando \_\_\_.
\end{quote}

Si el resultado es solamente una respuesta, empieza por Chat. Si es un
documento visual, empieza por Work. Si exige modificar o probar archivos
de un proyecto, empieza por Codex.

\begin{warningbox}

\textbf{Señal de alarma:} estás a punto de dar acceso a una carpeta
completa para resolver una pregunta que podías formular sin compartir
archivos.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} puedes justificar la herramienta elegida
con el tipo de resultado, no con «porque parece más potente».

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable}

\begin{itemize}
\tightlist
\item
  \textbf{Marta:} «Quiero saber cuánto facturé» puede ser una pregunta
  sobre una cifra o la creación de un sistema de seguimiento. El destino
  cambia al cambiar el resultado.
\item
  \textbf{Leo:} resumir un artículo no es lo mismo que construir un
  archivo de investigación con fuentes y trazabilidad.
\item
  \textbf{Dani:} pedir una explicación de un error no equivale a
  autorizar cambios en el repositorio.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Qué superficie elegirías para explicar una fórmula sin tocar
  archivos?
\item
  ¿Codex es automáticamente la mejor opción porque puede realizar más
  acciones?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Chat, porque el resultado es una explicación conversacional. 2.
  No.~Una capacidad innecesaria añade complejidad y acceso sin mejorar
  el resultado. Se elige por el trabajo que debe producirse.
\end{enumerate}

\subsection{Fuentes oficiales}\label{fuentes-oficiales}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/use-chatgpt}{Use ChatGPT}
\item
  \href{https://learn.chatgpt.com/docs/quickstart}{Quickstart}
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 2. Dónde utilizar Codex: app, web, CLI e
IDE}\label{lecciuxf3n-2.-duxf3nde-utilizar-codex-app-web-cli-e-ide}

\begin{metabox}

\textbf{Tiempo:} 35 minutos\\
\textbf{Superficie:} mapa comparativo\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-1}

\begin{itemize}
\tightlist
\item
  Qué superficies existen y qué puede hacer cada una.
\item
  Qué opción es más cómoda para empezar en tu sistema.
\item
  Qué funciones no están disponibles en todas las superficies.
\end{itemize}

\subsection{Una aplicación, varios lugares de
trabajo}\label{una-aplicaciuxf3n-varios-lugares-de-trabajo}

Desde julio de 2026, Codex forma parte de la aplicación de escritorio de
ChatGPT en macOS y Windows. Dentro de la aplicación puedes elegir Codex
para tareas de software o proyectos locales, junto a Chat y Work. La
expresión más precisa para este curso será \textbf{«ChatGPT para
escritorio, en modo Codex»}.

También existen:

\begin{itemize}
\tightlist
\item
  \textbf{Codex en la web:} apropiado para tareas en la nube y
  repositorios conectados, cuando tu cuenta dispone de esa función.
\item
  \textbf{Codex CLI:} interfaz dentro de la terminal. Es local, directa
  y automatizable.
\item
  \textbf{Extensión de IDE:} Codex dentro de editores compatibles con
  Visual Studio Code.
\item
  \textbf{ChatGPT Work en la web:} la alternativa accesible para Linux
  cuando el trabajo consiste en archivos subidos, investigación o
  entregables y no necesita actuar sobre una carpeta local.
\end{itemize}

\subsection{Matriz de decisión}\label{matriz-de-decisiuxf3n}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
Necesidad
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Superficie recomendada
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Motivo
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
Empezar sin terminal en macOS/Windows & Aplicación de escritorio &
Proyectos, previsualización, permisos y revisión visual en una
interfaz \\
Crear documentos, hojas, presentaciones o PDF & Work en web o escritorio
& Previsualización y revisión de entregables \\
Trabajar sobre archivos locales en Linux & CLI o extensión de IDE & No
hay aplicación de escritorio para Linux \\
Trabajar junto al código abierto en el editor & Extensión de IDE &
Selección y archivos del editor como contexto \\
Automatizar un análisis repetible & CLI con \texttt{codex\ exec} &
Salida y ejecución no interactiva \\
Navegar e interactuar con páginas & Web o aplicación de escritorio &
Browser no está disponible en CLI ni en la extensión \\
Controlar aplicaciones de escritorio & Aplicación en macOS/Windows &
Computer Use necesita acceso a la interfaz gráfica \\
\end{longtable}
}

\subsection{Local, worktree y nube}\label{local-worktree-y-nube}

En la aplicación, una tarea de Codex puede ejecutarse:

\begin{itemize}
\tightlist
\item
  \textbf{Local:} sobre la carpeta actual de tu ordenador.
\item
  \textbf{Worktree:} en una copia de trabajo aislada de un repositorio
  Git.
\item
  \textbf{Cloud:} en un entorno remoto configurado.
\end{itemize}

Si todavía no sabes qué significa worktree o repositorio, elige Local
dentro de la carpeta de práctica del curso. Más adelante aprenderás
cuándo conviene aislar cambios.

\subsection{Disponibilidad variable}\label{disponibilidad-variable}

Algunas funciones dependen del plan, la cuenta, la región, la
organización o un despliegue gradual. La señal fiable no es una captura
de este curso, sino que la opción aparezca en tu interfaz y esté
permitida por tu espacio de trabajo. No cambies de plan únicamente
porque una lección muestre una función opcional; utiliza la alternativa
indicada.

\subsection{Práctica: elige tu ruta
inicial}\label{pruxe1ctica-elige-tu-ruta-inicial}

Completa una frase:

\begin{itemize}
\tightlist
\item
  Uso macOS o Windows y quiero evitar la terminal: empezaré en
  \_\_\_\_\_\_\_\_\_\_.
\item
  Uso Linux y necesito actuar sobre una carpeta local: empezaré en
  \_\_\_\_\_\_\_\_\_\_.
\item
  Solo quiero crear un informe a partir de archivos subidos: empezaré en
  \_\_\_\_\_\_\_\_\_\_.
\end{itemize}

\textbf{Solución:} aplicación de escritorio en modo Codex; CLI o
extensión de IDE; ChatGPT Work.

\subsection{Encargo listo para
copiar}\label{encargo-listo-para-copiar-1}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Mi sistema operativo es [macOS/Windows/Linux]. Quiero [resultado] y prefiero}
\NormalTok{[usar/no usar] la terminal. Recomiéndame una superficie de ChatGPT o Codex.}
\NormalTok{Incluye una alternativa si la función principal no está disponible en mi cuenta.}
\NormalTok{No me des todavía pasos de instalación.}
\end{Highlighting}
\end{Shaded}

\subsection{Comprobación y
recuperación}\label{comprobaciuxf3n-y-recuperaciuxf3n-1}

La recomendación debe indicar sistema, superficie, tipo de acceso y
alternativa. Si mezcla instrucciones de Windows y Linux, pide que las
separe antes de continuar.

\subsection{Error frecuente}\label{error-frecuente-1}

\textbf{Seguir una captura antigua en lugar de la interfaz actual.} Los
nombres y ubicaciones cambian. Busca la función por su nombre y consulta
la documentación enlazada si no aparece.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-1}

\begin{itemize}
\tightlist
\item
  Sistema operativo y superficie elegida.
\item
  Motivo de la elección.
\item
  Alternativa prevista si una función no está disponible.
\end{itemize}

\subsection{Ejemplo resuelto: elegir según el equipo y el
momento}\label{ejemplo-resuelto-elegir-seguxfan-el-equipo-y-el-momento}

Marta utiliza un portátil con Windows en su oficina, un navegador en un
ordenador prestado y, ocasionalmente, su teléfono. Quiere construir una
web local para su negocio.

Su decisión razonada es:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  En su portátil abre la aplicación de escritorio y selecciona
  únicamente la carpeta de práctica: puede trabajar con archivos y
  revisar el resultado localmente.
\item
  En el ordenador prestado no inicia un proyecto con documentos
  sensibles; utiliza Chat o Work para una consulta sin datos privados.
\item
  En el teléfono revisa una explicación, pero pospone la edición del
  proyecto hasta volver al equipo que contiene la carpeta.
\end{enumerate}

El mejor entorno no es siempre el más avanzado. Es aquel en el que
puedes controlar el contexto, observar las acciones y comprobar el
resultado.

\textbf{Miniárbol de decisión:} si necesitas una interfaz visual y usas
macOS o Windows, comienza con la app. Si trabajas en Linux y quieres
operar localmente, considera CLI o IDE cuando estés preparado. Si solo
necesitas investigación o un entregable de Work, el navegador puede ser
suficiente.

\begin{warningbox}

\textbf{Señal de alarma:} cambias de equipo y das por supuesto que el
nuevo entorno tiene los mismos archivos, permisos, sesión y
herramientas.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} sabes decir dónde están físicamente los
archivos y en qué superficie se ejecutará el trabajo.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-1}

\begin{itemize}
\tightlist
\item
  Si Marta solo desea una presentación comercial, empieza en Work.
\item
  Si Dani necesita revisar cada línea mientras programa, el IDE puede
  resultar más cómodo.
\item
  Si Leo trabaja en un equipo sin sus archivos, puede investigar en la
  web y guardar el trabajo local para más tarde.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-1}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿La misma tarea puede requerir una superficie distinta al cambiar de
  dispositivo?
\item
  ¿Qué pregunta debes responder antes de permitir cambios locales?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-1}

Sí. Influyen el sistema operativo, la disponibilidad, la ubicación de
los archivos y el nivel de control. Antes de permitir cambios debes
saber qué carpeta o proyecto se ha seleccionado y qué contiene.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-1}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/quickstart}{Quickstart}
\item
  \href{https://learn.chatgpt.com/docs/environments/modes}{Codex
  environments}
\item
  \href{https://learn.chatgpt.com/docs/browser}{Browser}
\item
  \href{https://learn.chatgpt.com/docs/developer-commands?surface=ide}{Codex
  IDE extension}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 3. Instala e inicia sesión en tu
plataforma}\label{lecciuxf3n-3.-instala-e-inicia-sesiuxf3n-en-tu-plataforma}

\begin{metabox}

\textbf{Tiempo:} 30-60 minutos\\
\textbf{Superficie:} aplicación, CLI o IDE\\
\textbf{Plataformas:} rutas separadas para macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-2}

\begin{itemize}
\tightlist
\item
  Instalar la superficie adecuada sin mezclar instrucciones de sistemas
  distintos.
\item
  Iniciar sesión con ChatGPT.
\item
  Entender por qué una clave API no es necesaria para empezar.
\end{itemize}

\subsection{Antes de instalar}\label{antes-de-instalar}

Utiliza únicamente páginas y comandos oficiales. No descargues
instaladores desde anuncios, repositorios desconocidos o páginas que
pidan tu contraseña de ChatGPT. Comprueba que estás en
\texttt{chatgpt.com}, \texttt{openai.com} o la documentación oficial
enlazada.

Para aprender, la ruta recomendada es \textbf{iniciar sesión con
ChatGPT}. La clave API es una forma de acceso de pago por uso para
flujos locales o programáticos. No concede automáticamente las funciones
de la cuenta de ChatGPT y no debe pegarse en prompts, documentos ni
capturas.

\subsection{Ruta A - macOS}\label{ruta-a---macos}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Abre el
  \href{https://learn.chatgpt.com/docs/quickstart?setup=app}{Quickstart
  oficial}.
\item
  Descarga la aplicación de escritorio indicada para macOS.
\item
  Mueve o instala la aplicación siguiendo el asistente del sistema.
\item
  Ábrela y selecciona \textbf{Continue to sign in}.
\item
  Completa el inicio de sesión en la ventana del navegador.
\item
  Vuelve a la aplicación y confirma que aparece tu cuenta o espacio de
  trabajo.
\item
  En el selector de ChatGPT, localiza \textbf{Codex}.
\end{enumerate}

No concedas todavía acceso a Documentos, Escritorio ni a una carpeta con
archivos reales. La siguiente lección creará un espacio de práctica.

\subsection{Ruta B - Windows}\label{ruta-b---windows}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Abre la página oficial de la
  \href{https://learn.chatgpt.com/docs/windows/windows-app}{aplicación
  para Windows}.
\item
  Instálala desde Microsoft Store.
\item
  Como alternativa oficial desde PowerShell, puedes utilizar:
\end{enumerate}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{winget install Codex }\OperatorTok{{-}}\NormalTok{s msstore}
\end{Highlighting}
\end{Shaded}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{3}
\tightlist
\item
  Abre la aplicación y completa \textbf{Continue to sign in}.
\item
  Confirma que aparece tu cuenta y que puedes seleccionar Codex.
\item
  Mantén el agente en Windows nativo. WSL2 es una opción técnica, no un
  requisito para empezar.
\end{enumerate}

Si tu organización administra el equipo, Microsoft Store, plugins o
Codex pueden estar restringidos. En ese caso no intentes eludir la
política: consulta a la persona administradora.

\subsection{Ruta C - Linux}\label{ruta-c---linux}

La aplicación de escritorio no está disponible para Linux. Puedes
utilizar ChatGPT Work en el navegador para archivos subidos y
entregables. Para trabajar con una carpeta local mediante Codex, utiliza
la CLI o la extensión de IDE.

En una distribución compatible, abre una terminal y ejecuta el
instalador autónomo oficial:

\begin{Shaded}
\begin{Highlighting}[]
\ExtensionTok{curl} \AttributeTok{{-}fsSL}\NormalTok{ https://chatgpt.com/codex/install.sh }\KeywordTok{|} \FunctionTok{sh}
\ExtensionTok{codex}
\end{Highlighting}
\end{Shaded}

Sigue el inicio de sesión que se abre en el navegador. Para que el
sandbox de Linux sea fiable, instala \texttt{bubblewrap} con el gestor
de paquetes de tu distribución:

\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\# Ubuntu o Debian}
\FunctionTok{sudo}\NormalTok{ apt install bubblewrap}

\CommentTok{\# Fedora}
\FunctionTok{sudo}\NormalTok{ dnf install bubblewrap}
\end{Highlighting}
\end{Shaded}

Si no tienes permisos para instalar paquetes, utiliza ChatGPT Work en la
web o pide ayuda a la persona administradora. No desactives las
protecciones del sistema únicamente para completar el curso.

\subsection{CLI opcional en macOS o
Windows}\label{cli-opcional-en-macos-o-windows}

La CLI se enseñará en la lección 19. Si ya quieres disponer de ella, la
documentación oficial publica instaladores autónomos para shell
(\texttt{install.sh}) y PowerShell (\texttt{install.ps1}). No necesitas
instalar Node.js ni npm para seguir la ruta principal de este curso.

\subsection{Comprobación de inicio de
sesión}\label{comprobaciuxf3n-de-inicio-de-sesiuxf3n}

\begin{itemize}
\tightlist
\item
  En la aplicación o extensión, abre el menú de perfil y comprueba la
  cuenta activa.
\item
  En CLI, si Codex se inicia sin pedir de nuevo credenciales y muestra
  el compositor, la sesión está disponible.
\item
  No publiques capturas que muestren correo, nombre del espacio de
  trabajo, claves o identificadores privados.
\end{itemize}

\subsection{Encargo listo para
copiar}\label{encargo-listo-para-copiar-2}

Después de iniciar sesión, escribe:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Estoy aprendiendo. No abras carpetas, no ejecutes comandos y no cambies archivos.}
\NormalTok{Indícame qué superficie estoy usando, qué cuenta o espacio de trabajo está activo}
\NormalTok{sin mostrar datos sensibles, y dónde puedo revisar los permisos antes de una tarea.}
\end{Highlighting}
\end{Shaded}

\subsection{Resultado esperado}\label{resultado-esperado-1}

Codex identifica la superficie y señala el control de permisos. No debe
solicitar acceso a una carpeta ni mostrar credenciales.

\subsection{Recuperación}\label{recuperaciuxf3n}

\begin{itemize}
\tightlist
\item
  Si has iniciado sesión con la cuenta incorrecta, utiliza \textbf{Log
  out} y vuelve a entrar.
\item
  Si pegaste accidentalmente una clave API en un prompt, revócala
  inmediatamente desde el panel de API y crea otra solo si realmente la
  necesitas.
\item
  Si el instalador no procede de una página oficial, cancela la
  instalación y elimina el archivo descargado.
\end{itemize}

\subsection{Error frecuente}\label{error-frecuente-2}

\textbf{Confundir la suscripción de ChatGPT con la facturación de API.}
Son rutas de acceso distintas. Iniciar sesión con una clave API utiliza
facturación de la plataforma API y puede limitar funciones dependientes
de ChatGPT o de la nube.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-2}

Anota sistema operativo, superficie instalada y método de acceso. No
guardes tokens, contraseñas ni claves.

\subsection{Ejemplo resuelto: instalar sin
adivinar}\label{ejemplo-resuelto-instalar-sin-adivinar}

Dani instala Codex, inicia sesión y escribe inmediatamente «arregla mi
proyecto». Ese salto oculta demasiadas incógnitas. Una primera
comprobación más segura es:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Todavía no cambies nada. Indícame:}
\NormalTok{1. qué carpeta tienes abierta;}
\NormalTok{2. qué archivos de instrucciones detectas;}
\NormalTok{3. qué herramientas puedes utilizar;}
\NormalTok{4. qué limitaciones o permisos ves.}
\NormalTok{No leas archivos fuera de la carpeta seleccionada.}
\end{Highlighting}
\end{Shaded}

La respuesta esperada no es idéntica en todos los equipos. Debe permitir
comprobar la ruta, el alcance y las capacidades. Si menciona otra
carpeta, Dani detiene la tarea y corrige el entorno antes de continuar.

Después realiza una prueba mínima: crea una carpeta vacía llamada
\texttt{practica-codex}, la selecciona y pide una inspección sin
modificaciones. Solo cuando la ubicación es correcta continúa con la
lección 4.

\textbf{Diagnóstico por síntomas:}

\begin{itemize}
\tightlist
\item
  No aparece una función: comprueba plataforma, aplicación actualizada,
  plan y despliegue; no inventes un botón.
\item
  La sesión no se inicia: revisa conexión, cuenta y método de acceso
  antes de reinstalar.
\item
  Codex ve la carpeta equivocada: cierra o cambia el proyecto; no
  intentes compensarlo con un prompt.
\item
  En Linux buscas la misma interfaz de escritorio: utiliza la
  alternativa documentada para CLI, IDE o web.
\end{itemize}

\begin{successbox}

\textbf{Criterio de terminado:} puedes abrir un entorno de práctica,
identificar su ruta y recibir una descripción sin que se modifique
ningún archivo.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-2}

Repite la comprobación después de cambiar de carpeta. Debe cambiar la
ruta informada, pero mantenerse la instrucción de no modificar.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-2}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué «la instalación se abrió» no demuestra que el entorno esté
  bien configurado?
\item
  Si falta una función, ¿debes seguir una captura antigua o verificar
  disponibilidad?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-2}

Abrir la aplicación no confirma la carpeta, permisos ni herramientas
disponibles. Cuando una función falta, se verifica su disponibilidad
actual y se utiliza la alternativa del curso; no se fuerza una interfaz
que puede haber cambiado.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-2}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/quickstart}{Quickstart}
\item
  \href{https://learn.chatgpt.com/docs/auth}{Authentication}
\item
  \href{https://learn.chatgpt.com/docs/windows/windows-app}{Windows app}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.\\
\textbf{Prueba multiplataforma pendiente antes de publicación:}
instalador, inicio de sesión y nombres de menú en macOS, Windows nativo
y Linux.

\chapter{Módulo 2. Tu primer resultado
seguro}\label{muxf3dulo-2.-tu-primer-resultado-seguro}

\clearpage

\section{Lección 4. Crea una carpeta de práctica y empieza en solo
lectura}\label{lecciuxf3n-4.-crea-una-carpeta-de-pruxe1ctica-y-empieza-en-solo-lectura}

\begin{metabox}

\textbf{Tiempo:} 35 minutos\\
\textbf{Superficie:} aplicación en macOS/Windows; CLI o IDE en Linux\\
\textbf{Riesgo:} bajo

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-3}

\begin{itemize}
\tightlist
\item
  Elegir exactamente qué carpeta puede ver Codex.
\item
  Diferenciar leer de modificar.
\item
  Completar una primera tarea sin cambiar ningún archivo.
\end{itemize}

\subsection{Prepara el espacio}\label{prepara-el-espacio}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Crea una carpeta llamada \texttt{Aprender-Codex}.
\item
  Dentro, crea \texttt{entrada}, \texttt{salida} y
  \texttt{copia-seguridad}.
\item
  Crea en \texttt{entrada} tres archivos de texto:

  \begin{itemize}
  \tightlist
  \item
    \texttt{ideas.txt}: tres ideas desordenadas.
  \item
    \texttt{tareas.txt}: cinco tareas sin ordenar.
  \item
    \texttt{notas.txt}: un párrafo de cualquier tema.
  \end{itemize}
\item
  Copia la carpeta \texttt{entrada} dentro de \texttt{copia-seguridad}.
\end{enumerate}

No utilices información personal. Estos archivos son material desechable
de entrenamiento.

\subsection{Abre únicamente la carpeta de
práctica}\label{abre-uxfanicamente-la-carpeta-de-pruxe1ctica}

\textbf{Aplicación:} crea o añade un proyecto local y selecciona
\texttt{Aprender-Codex}. Inicia una tarea en modo Codex y revisa el
control de permisos bajo el compositor.

\textbf{CLI:} abre una terminal, entra en la carpeta y ejecuta Codex:

\begin{Shaded}
\begin{Highlighting}[]
\BuiltInTok{cd}\NormalTok{ /ruta/a/Aprender{-}Codex}
\ExtensionTok{codex}
\end{Highlighting}
\end{Shaded}

En CLI puedes utilizar \texttt{/permissions} para seleccionar un perfil
de solo lectura. Si la superficie no muestra ese comando, pide una tarea
de análisis y mantén el permiso de escritura desactivado en la interfaz.

\subsection{Primera petición}\label{primera-peticiuxf3n}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Trabaja únicamente dentro de esta carpeta. No modifiques, renombres, muevas ni}
\NormalTok{crees archivos. Lee los tres archivos de entrada y devuelve:}
\NormalTok{1. una frase sobre el contenido de cada archivo;}
\NormalTok{2. cualquier dato que parezca personal o sensible;}
\NormalTok{3. qué archivos no has podido leer.}
\NormalTok{Separa hechos observados de inferencias.}
\end{Highlighting}
\end{Shaded}

\subsection{Qué debes observar}\label{quuxe9-debes-observar}

Codex debería mencionar los tres archivos, resumirlos y declarar
cualquier límite. No debería aparecer ningún archivo nuevo en
\texttt{salida} ni cambiar la fecha de modificación de los originales.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Abre \texttt{entrada} con el explorador de archivos.
\item
  Confirma que siguen existiendo los mismos tres archivos.
\item
  Comprueba que \texttt{salida} continúa vacía.
\item
  Abre uno de los textos y confirma que conserva su contenido.
\end{enumerate}

No necesitas confiar en la frase «no cambié nada». Comprueba el estado
visible.

\subsection{Recuperación}\label{recuperaciuxf3n-1}

Si algo cambió, cierra la tarea, compara con \texttt{copia-seguridad} y
restaura únicamente el archivo afectado. Conserva ambos hasta entender
qué ocurrió.

\subsection{Error frecuente}\label{error-frecuente-3}

\textbf{Abrir Documentos o la carpeta personal completa.} El agente
recibe demasiado contexto y una frontera poco clara. Crea un proyecto
específico para cada cuerpo de trabajo.

\subsection{Mini ejercicio}\label{mini-ejercicio}

Repite la tarea limitando el análisis a \texttt{tareas.txt} y pide que
explique qué archivos decidió no leer.

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-3}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No cambies archivos. Lee únicamente entrada/tareas.txt. Clasifica las tareas}
\NormalTok{por tema en tu respuesta y enumera los archivos que has dejado fuera por mi}
\NormalTok{restricción.}
\end{Highlighting}
\end{Shaded}

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-3}

\begin{itemize}
\tightlist
\item
  Captura o anotación del permiso utilizado.
\item
  Lista inicial y final de archivos.
\item
  Resumen de Codex con sus límites.
\end{itemize}

\subsection{Ejemplo resuelto: la primera inspección
controlada}\label{ejemplo-resuelto-la-primera-inspecciuxf3n-controlada}

Sol crea \texttt{practica-codex} con estos cuatro archivos:
\texttt{ideas.txt}, \texttt{tareas.txt}, \texttt{notas.txt} y
\texttt{seguimiento.txt}. Antes de pedir una reorganización utiliza un
encargo de solo lectura:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Trabaja únicamente dentro de esta carpeta.}
\NormalTok{No crees, edites, muevas ni borres archivos.}
\NormalTok{Lee los cuatro archivos de texto y devuelve:}
\NormalTok{{-} una tabla con nombre, propósito probable y problemas detectados;}
\NormalTok{{-} las contradicciones o datos incompletos;}
\NormalTok{{-} un plan de cambios propuesto, sin ejecutarlo.}
\NormalTok{Termina confirmando explícitamente que no modificaste nada.}
\end{Highlighting}
\end{Shaded}

Codex propone que \texttt{ideas.txt} contiene posibles actividades,
\texttt{tareas.txt} mezcla fechas y prioridades, \texttt{notas.txt}
guarda observaciones y \texttt{seguimiento.txt} registra el estado. Sol
no acepta esa interpretación automáticamente: abre los archivos y
compara dos elementos concretos de cada uno.

Luego pregunta: «¿Qué frase exacta del archivo te hizo interpretar esto
como una fecha?». Esa pregunta enseña a exigir trazabilidad, no
solamente una respuesta convincente.

\begin{tipbox}

\textbf{Prueba de integridad:} antes y después de la inspección, cuenta
los archivos y mira sus fechas de modificación. Deben permanecer
iguales. No hace falta una herramienta técnica si el explorador de
archivos permite verlo.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} la respuesta anuncia que «ha mejorado» o «ha
corregido» contenido cuando solo se autorizó lectura.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} existe un plan concreto, puedes
relacionarlo con el contenido real y los cuatro originales siguen
intactos.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-3}

Añade un quinto archivo con un nombre ambiguo, como
\texttt{final-final.txt}. Pide que Codex formule preguntas antes de
decidir su propósito.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-3}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Un modo de solo lectura elimina la necesidad de revisar la respuesta?
\item
  ¿Qué evidencia sencilla permite detectar un cambio inesperado?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-4}

No.~La interpretación del contenido puede ser incorrecta aunque no se
modifique nada. Puedes comparar el número de archivos, sus nombres,
fechas de modificación y contenido; en proyectos con Git, también el
estado y el diff.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-3}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\item
  \href{https://learn.chatgpt.com/docs/agent-approvals-security}{Agent
  approvals \& security}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 5. Pide resultados claros sin aprender «prompt
engineering»}\label{lecciuxf3n-5.-pide-resultados-claros-sin-aprender-prompt-engineering}

\begin{metabox}

\textbf{Tiempo:} 40 minutos\\
\textbf{Superficie:} todas\\
\textbf{Riesgo:} bajo

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-4}

\begin{itemize}
\tightlist
\item
  Escribir una petición útil con cuatro elementos.
\item
  Expresar límites que previenen trabajo no deseado.
\item
  Mejorar un resultado mediante mensajes de seguimiento.
\end{itemize}

\subsection{Habla como con una persona
colaboradora}\label{habla-como-con-una-persona-colaboradora}

No existe una fórmula obligatoria ni palabras mágicas. Una petición
corta puede funcionar. Cuando el resultado importa, añade cuatro piezas:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Objetivo:} qué resultado necesitas.
\item
  \textbf{Contexto:} qué archivos, fuentes o situación cambian la
  respuesta.
\item
  \textbf{Salida:} forma, longitud, audiencia y lugar de entrega.
\item
  \textbf{Límites:} qué debe conservar, evitar o consultar antes de
  hacer.
\end{enumerate}

Una regla mnemotécnica es \textbf{OCSL: Objetivo, Contexto, Salida,
Límites}.

\subsection{De una petición vaga a un encargo
comprobable}\label{de-una-peticiuxf3n-vaga-a-un-encargo-comprobable}

Petición vaga:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Organiza mis cosas.}
\end{Highlighting}
\end{Shaded}

Encargo útil:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{OBJETIVO: convertir entrada/tareas.txt en un plan semanal.}
\NormalTok{CONTEXTO: las tareas no tienen fechas; no inventes plazos.}
\NormalTok{SALIDA: prepara primero una propuesta en el chat con tres categorías y una}
\NormalTok{tabla de lunes a viernes.}
\NormalTok{LÍMITES: no cambies archivos todavía. Marca como "sin fecha" lo que no puedas}
\NormalTok{colocar y pregúntame antes de crear el resultado final.}
\end{Highlighting}
\end{Shaded}

El segundo encargo no controla cada paso interno. Define las decisiones
que podrían causar un resultado incorrecto.

\subsection{Práctica guiada}\label{pruxe1ctica-guiada}

Utiliza \texttt{entrada/tareas.txt} y envía el encargo anterior. Revisa
la propuesta. Después responde con una corrección concreta:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Conserva las categorías. Mueve las tareas administrativas al martes, no asignes}
\NormalTok{más de tres tareas a un día y añade una sección final con elementos que necesitan}
\NormalTok{mi decisión. Todavía no crees archivos.}
\end{Highlighting}
\end{Shaded}

Cuando estés conforme:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Crea salida/plan{-}semanal.md con la versión aprobada. No modifiques los archivos}
\NormalTok{de entrada. Después vuelve a abrir el archivo creado y comprueba que contiene}
\NormalTok{las tres categorías, los cinco días y la sección de decisiones pendientes.}
\end{Highlighting}
\end{Shaded}

\subsection{Resultado esperado}\label{resultado-esperado-2}

Un archivo nuevo dentro de \texttt{salida}, mientras \texttt{entrada}
permanece intacta. El resumen final debe indicar qué comprobó y qué no
pudo decidir.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-1}

\begin{itemize}
\tightlist
\item
  Abre \texttt{salida/plan-semanal.md}.
\item
  Cuenta los cinco días.
\item
  Confirma que ningún día tiene más de tres tareas.
\item
  Busca la sección de decisiones pendientes.
\item
  Abre \texttt{entrada/tareas.txt} y confirma que no cambió.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-2}

Si el resultado no sirve, no necesitas borrar la conversación.
Especifica el cambio y pide guardar una segunda versión, por ejemplo
\texttt{plan-semanal-v2.md}. Elimina la anterior únicamente después de
comparar ambas.

\subsection{Error frecuente}\label{error-frecuente-4}

\textbf{Describir veinte reglas que no cambian el resultado.} Demasiadas
instrucciones pueden ocultar las restricciones verdaderamente
importantes. Prioriza audiencia, fuentes, formato y acciones que
requieren permiso.

\subsection{Mini ejercicio}\label{mini-ejercicio-1}

Convierte una petición tuya en OCSL. Después elimina una instrucción que
no cambie el resultado.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-4}

\begin{itemize}
\tightlist
\item
  Petición inicial.
\item
  Mensaje de corrección.
\item
  Lista de comprobación final.
\end{itemize}

\subsection{Ejemplo resuelto: de «ordénamelo» a un encargo
comprobable}\label{ejemplo-resuelto-de-orduxe9namelo-a-un-encargo-comprobable}

Marta empieza con este prompt:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Ordéname estos clientes y déjalo bonito.}
\end{Highlighting}
\end{Shaded}

El problema no es que sea corto, sino que oculta decisiones: ¿qué
archivos?, ¿qué significa ordenar?, ¿se pueden cambiar originales?,
¿cuál es el resultado?, ¿cómo se comprueba?

Aplicando OCSL -objetivo, contexto, salida y límites- lo transforma:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Objetivo: crear un resumen de seguimiento de clientes.}
\NormalTok{Contexto: usa únicamente los CSV de la carpeta entrada. La columna}
\NormalTok{ultima\_contacto está en formato AAAA{-}MM{-}DD.}
\NormalTok{Salida: crea salida/seguimiento.csv ordenado por fecha ascendente y}
\NormalTok{salida/resumen.md con total de clientes, pendientes y filas incompletas.}
\NormalTok{Límites: no modifiques entrada, no inventes datos y no envíes mensajes.}
\NormalTok{Antes de escribir, muestra las columnas detectadas y tres filas de vista previa.}
\NormalTok{Al terminar, comprueba que el número de filas coincide y enumera los archivos creados.}
\end{Highlighting}
\end{Shaded}

Ahora «correcto» es observable: los originales continúan intactos, el
recuento coincide, los datos faltantes se señalan y solo aparecen dos
archivos en \texttt{salida}.

\textbf{Una técnica útil:} sustituye adjetivos vagos por pruebas.
«Bonito» puede convertirse en «títulos claros, una tabla legible y
fechas con el mismo formato». «Profesional» puede convertirse en «sin
errores ortográficos, tono formal y llamadas a la acción visibles».

\begin{successbox}

\textbf{Criterio de terminado:} otra persona puede leer tu prompt y
predecir qué se creará, qué no se tocará y cómo se validará.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-4}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} cambia «hazme apuntes buenos» por una guía con nivel,
  extensión, conceptos obligatorios y cinco preguntas.
\item
  \textbf{Leo:} cambia «investiga mucho» por preguntas, periodo, tipos
  de fuente y tabla de afirmaciones con enlaces.
\item
  \textbf{Dani:} cambia «arregla el código» por error reproducible,
  alcance, prueba y archivos excluidos.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-4}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Todos los prompts largos son mejores?
\item
  Convierte «haz una web moderna» en dos criterios observables.
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-5}

No.~La longitud no sustituye la claridad. Dos criterios posibles son:
«se adapta a móvil sin desplazamiento horizontal» y «contiene
navegación, descripción del servicio y un contacto visible». Hay muchas
respuestas válidas si pueden comprobarse.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-4}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 6. Planifica, corrige el rumbo y cierra con
evidencia}\label{lecciuxf3n-6.-planifica-corrige-el-rumbo-y-cierra-con-evidencia}

\begin{metabox}

\textbf{Tiempo:} 40 minutos\\
\textbf{Superficie:} aplicación, CLI o IDE\\
\textbf{Riesgo:} bajo

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-5}

\begin{itemize}
\tightlist
\item
  Pedir un plan antes de una tarea ambigua.
\item
  Distinguir entre corregir el trabajo actual y dejar una petición en
  cola.
\item
  Definir cuándo una tarea está realmente terminada.
\end{itemize}

\subsection{Plan primero cuando decidir cuesta más que
ejecutar}\label{plan-primero-cuando-decidir-cuesta-muxe1s-que-ejecutar}

Pide un plan cuando el trabajo tiene varias salidas posibles, afecta a
muchos archivos o contiene decisiones que no quieres delegar. Puedes
utilizar Plan mode si aparece en tu superficie, escribir \texttt{/plan}
donde esté disponible o pedirlo en lenguaje natural:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No actúes todavía. Inspecciona el material, hazme las preguntas que cambien el}
\NormalTok{resultado y propón un plan de máximo cinco pasos. Para cada paso indica qué}
\NormalTok{archivo podría cambiar y cómo comprobaríamos que está bien.}
\end{Highlighting}
\end{Shaded}

Un buen plan no es una lista genérica de verbos. Debe revelar
decisiones, archivos, riesgos y comprobaciones.

\subsection{Corregir mientras trabaja}\label{corregir-mientras-trabaja}

Si Codex está trabajando y descubres un error, envía un mensaje para
\textbf{steer} o dirigir el turno actual:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Detente antes de crear archivos. Has supuesto que las tareas tienen prioridad;}
\NormalTok{el archivo no contiene esa información. Marca la prioridad como pendiente y}
\NormalTok{continúa con el resto del plan.}
\end{Highlighting}
\end{Shaded}

Si tu mensaje pertenece al paso siguiente, colócalo en \textbf{queue} o
cola. En la aplicación puedes elegir el comportamiento en Settings
\textgreater{} General \textgreater{} Follow-up behavior. En CLI, Enter
dirige el turno activo y Tab coloca el mensaje para el siguiente turno.

\subsection{«Terminado» necesita una
definición}\label{terminado-necesita-una-definiciuxf3n}

Una respuesta elocuente no demuestra que el resultado esté listo. Antes
de autorizar el trabajo, define condiciones observables:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{La tarea estará terminada cuando:}
\NormalTok{{-} exista salida/resumen.md;}
\NormalTok{{-} contenga exactamente las tres secciones acordadas;}
\NormalTok{{-} cada afirmación procedente de notas.txt cite el encabezado de origen;}
\NormalTok{{-} entrada permanezca sin cambios;}
\NormalTok{{-} indiques cualquier comprobación que no pudiste realizar.}
\end{Highlighting}
\end{Shaded}

\subsection{Práctica: plan y cierre}\label{pruxe1ctica-plan-y-cierre}

Pide a Codex que combine \texttt{ideas.txt} y \texttt{notas.txt} en un
resumen. Primero solicita plan y preguntas. Responde solo a las
preguntas necesarias. Autoriza la creación cuando el plan sea
verificable.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-2}

Utiliza una tabla sencilla:

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}lrrr@{}}
\toprule\noalign{}
Condición & Sí & No & No comprobado \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
Existe el archivo acordado & & & \\
Mantiene las secciones & & & \\
Conserva los originales & & & \\
Declara sus límites & & & \\
\end{longtable}
}

No conviertas «No comprobado» en «Sí» por intuición. Esa columna es
información útil.

\subsection{Recuperación}\label{recuperaciuxf3n-3}

Si Codex se desvía, interrumpe la tarea y vuelve al último punto
aprobado. No amplíes permisos para intentar que una tarea mal definida
termine más rápido.

\subsection{Error frecuente}\label{error-frecuente-5}

\textbf{Cambiar el objetivo a mitad del trabajo sin decir qué queda
cancelado.} Escribe: «Sustituye el objetivo anterior por este; conserva
estos archivos; descarta estos pasos».

\subsection{Mini ejercicio}\label{mini-ejercicio-2}

Pide dos planes alternativos para la misma tarea: uno rápido y otro con
mayor verificación. Elige justificando coste y riesgo.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-5}

\begin{itemize}
\tightlist
\item
  Plan aprobado.
\item
  Mensajes que corrigieron el rumbo.
\item
  Tabla de condiciones finales.
\item
  Límites declarados por Codex.
\end{itemize}

\subsection{Ejemplo resuelto: corregir el rumbo sin empezar de
cero}\label{ejemplo-resuelto-corregir-el-rumbo-sin-empezar-de-cero}

Leo encarga una comparación de cinco fuentes. Codex propone este plan:
buscar fuentes, resumirlas, redactar una conclusión y crear el informe.
Durante la búsqueda, Leo observa que dos resultados son notas
comerciales y no documentos primarios.

En lugar de esperar al final escribe una corrección inmediata:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Corrige el criterio de fuentes antes de continuar: prioriza documentación}
\NormalTok{oficial y estudios originales. Conserva las fuentes comerciales en una}
\NormalTok{sección aparte llamada «perspectiva del proveedor» y no las utilices para}
\NormalTok{sostener la conclusión principal. Muéstrame la lista revisada antes de redactar.}
\end{Highlighting}
\end{Shaded}

Esto es \textbf{steer}: modifica el trabajo activo. Después añade a la
cola:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Cuando termines la verificación, crea también una tabla con afirmación,}
\NormalTok{fuente, fecha y nivel de confianza.}
\end{Highlighting}
\end{Shaded}

Al cerrar, no pregunta «¿todo bien?». Pide un parte de entrega:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Resume qué hiciste, qué archivos cambiaste, qué comprobaste realmente,}
\NormalTok{qué no pudiste comprobar y qué decisión necesita revisión humana.}
\end{Highlighting}
\end{Shaded}

La lección es doble: un plan no es una promesa inmutable y una respuesta
final no es evidencia por sí sola.

\begin{warningbox}

\textbf{Señal de alarma:} el plan se aleja del objetivo, pero dejas que
avance porque «ya ha empezado».

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} puedes reconstruir el recorrido desde el
encargo, las correcciones y la evidencia final.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-5}

Pide a Codex un plan deliberadamente corto de tres pasos. Durante el
segundo, introduce una restricción nueva compatible, como excluir un
archivo de salida. Observa si actualiza el plan y confirma el efecto.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-5}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Qué diferencia hay entre corregir el trabajo activo y añadir una
  tarea posterior?
\item
  ¿«Las pruebas pasan» es evidencia suficiente?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-6}

Corregir el trabajo activo cambia el rumbo actual; poner algo en cola lo
ejecuta después. «Las pruebas pasan» solo es útil si sabes qué prueba se
ejecutó, con qué resultado y si realmente cubre el cambio relevante.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-5}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\item
  \href{https://learn.chatgpt.com/docs/reference/settings}{ChatGPT
  desktop app settings}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\chapter{Módulo 3. Trabajo cotidiano sin
programar}\label{muxf3dulo-3.-trabajo-cotidiano-sin-programar}

\clearpage

\section{Lección 7. Organiza archivos sin perder los
originales}\label{lecciuxf3n-7.-organiza-archivos-sin-perder-los-originales}

\begin{metabox}

\textbf{Tiempo:} 45 minutos\\
\textbf{Superficie:} Codex local\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-6}

\begin{itemize}
\tightlist
\item
  Inventariar archivos antes de cambiarlos.
\item
  Separar propuesta y ejecución.
\item
  Detectar nombres duplicados y conservar una copia recuperable.
\end{itemize}

\subsection{Organizar no empieza
moviendo}\label{organizar-no-empieza-moviendo}

Una tarea como «ordena esta carpeta» es peligrosa porque oculta
decisiones: qué criterio utilizar, qué hacer con duplicados, si se
pueden borrar archivos y cómo recuperar la estructura anterior.

Utiliza siempre tres fases:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Inventario:} qué existe y qué no se puede interpretar.
\item
  \textbf{Vista previa:} tabla exacta de origen y destino, sin cambios.
\item
  \textbf{Ejecución:} copiar primero; borrar o reemplazar solo después
  de revisar.
\end{enumerate}

\subsection{Prepara material de
entrenamiento}\label{prepara-material-de-entrenamiento}

Dentro de \texttt{Aprender-Codex}, crea \texttt{archivos-desordenados} y
copia allí seis archivos desechables. Puedes duplicar los textos del
curso y darles nombres como:

\begin{itemize}
\tightlist
\item
  \texttt{notas\ reunion.txt}
\item
  \texttt{NOTAS-reunion-copia.txt}
\item
  \texttt{idea\ final.txt}
\item
  \texttt{idea\ final\ 2.txt}
\item
  \texttt{tareas\ julio.txt}
\item
  \texttt{sin\ nombre.txt}
\end{itemize}

Crea también \texttt{archivos-organizados}. No utilices todavía fotos ni
documentos personales.

\subsection{Fase 1 - inventario}\label{fase-1---inventario}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Analiza únicamente archivos{-}desordenados. No cambies nada. Devuelve una tabla con:}
\NormalTok{{-} nombre actual;}
\NormalTok{{-} tipo de archivo;}
\NormalTok{{-} tema probable;}
\NormalTok{{-} posibles duplicados;}
\NormalTok{{-} información que no puedes determinar.}
\NormalTok{No deduzcas que dos archivos son duplicados solo porque sus nombres se parecen.}
\end{Highlighting}
\end{Shaded}

\subsection{Fase 2 - vista previa}\label{fase-2---vista-previa}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Propón una organización dentro de archivos{-}organizados con subcarpetas por tema.}
\NormalTok{Usa nombres en minúsculas, guiones y sin fechas inventadas. Devuelve una tabla}
\NormalTok{origen → destino. Señala colisiones, pero no copies, muevas, renombres ni borres.}
\end{Highlighting}
\end{Shaded}

Revisa cada fila. Si dos archivos terminarían con el mismo nombre, exige
nombres distintos o detén la ejecución.

\subsection{Fase 3 - copia controlada}\label{fase-3---copia-controlada}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Aplica únicamente la tabla que acabo de aprobar. Copia los archivos a}
\NormalTok{archivos{-}organizados; no muevas ni borres los originales. Después compara el}
\NormalTok{número de archivos de origen y destino, informa de cualquier error y guarda en}
\NormalTok{salida/mapa{-}organizacion.md la tabla realmente aplicada.}
\end{Highlighting}
\end{Shaded}

\subsection{Resultado esperado}\label{resultado-esperado-3}

Los originales siguen en \texttt{archivos-desordenados}, las copias
están clasificadas en \texttt{archivos-organizados} y existe un mapa de
lo realizado. El número de archivos debe coincidir salvo que hayas
aprobado una excepción.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-3}

\begin{itemize}
\tightlist
\item
  Cuenta los archivos de origen y las copias.
\item
  Abre al azar dos copias y compáralas con sus originales.
\item
  Busca nombres repetidos dentro de cada carpeta de destino.
\item
  Comprueba que el mapa coincide con las ubicaciones reales.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-4}

Como los originales no se movieron, puedes eliminar
\texttt{archivos-organizados} y repetir la práctica. No autorices el
borrado de \texttt{archivos-desordenados} durante el curso.

\subsection{Error frecuente}\label{error-frecuente-6}

\textbf{Pedir que elimine duplicados sin definir duplicado.} Dos
archivos pueden compartir nombre y contener información distinta.
Primero compara contenido, tamaño o una regla explícita; después decide
tú.

\subsection{Mini ejercicio}\label{mini-ejercicio-3}

Añade un séptimo archivo cuyo destino chocaría con otro. Pide una nueva
vista previa y comprueba que Codex detiene o resuelve la colisión sin
sobrescribir.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-6}

\begin{itemize}
\tightlist
\item
  Inventario inicial.
\item
  Tabla aprobada.
\item
  Mapa aplicado.
\item
  Conteo antes y después.
\end{itemize}

\subsection{Ejemplo resuelto: organizar sin destruir el
significado}\label{ejemplo-resuelto-organizar-sin-destruir-el-significado}

Leo tiene doce archivos con nombres como \texttt{doc1.pdf},
\texttt{version-final.docx} y \texttt{captura\ 3.png}. Pedir
«organízalos» podría provocar una clasificación arbitraria. Empieza por
inventario y propuesta:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No cambies nada todavía. Crea una tabla con nombre actual, tipo,}
\NormalTok{fecha disponible, tema probable y nombre propuesto. Si el tema no se}
\NormalTok{puede deducir con seguridad, marca REVISAR. Propón una estructura de}
\NormalTok{carpetas con un máximo de dos niveles. Detecta colisiones antes de renombrar.}
\end{Highlighting}
\end{Shaded}

La propuesta incluye \texttt{fuentes}, \texttt{borradores} y
\texttt{recursos-visuales}. Dos documentos recibirían el mismo nombre.
Codex no debe sobrescribir uno: propone sufijos descriptivos y solicita
decisión.

Leo aprueba solo cuatro cambios y pide que el resto permanezca intacto.
Codex crea primero una copia en \texttt{organizado-vista-previa} y
entrega un archivo \texttt{mapa-de-cambios.md} con nombre anterior y
nuevo. Leo abre una muestra, comprueba que las extensiones se conservan
y compara el total.

\begin{tipbox}

\textbf{Regla práctica:} una buena organización conserva cuatro cosas:
contenido, cantidad, relación entre archivos y posibilidad de localizar
el original.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} aparecen nombres precisos que no pueden
justificarse por el contenido, o se propone borrar «duplicados» sin
comparar su identidad.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} el recuento cuadra, no hay
sobrescrituras, el mapa permite deshacer manualmente y una muestra se
abre correctamente.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-6}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} clasifica por asignatura y tipo, pero no por una fecha
  inexistente.
\item
  \textbf{Marta:} separa documentos de clientes sin incluir datos
  personales en nombres visibles.
\item
  \textbf{Dani:} excluye dependencias generadas y archivos ocultos antes
  de reorganizar un proyecto.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-6}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Dos archivos con el mismo tamaño son necesariamente duplicados?
\item
  ¿Por qué conviene un mapa de nombres antes/después?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-7}

No.~Pueden contener datos distintos; la deduplicación exige una
comparación fiable. El mapa documenta el cambio, permite localizar
archivos y facilita una reversión si la clasificación no funciona.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-6}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\item
  \href{https://learn.chatgpt.com/docs/artifacts-viewer}{Work with
  files}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 8. Crea documentos, datos, presentaciones, PDF e
imágenes}\label{lecciuxf3n-8.-crea-documentos-datos-presentaciones-pdf-e-imuxe1genes}

\begin{metabox}

\textbf{Tiempo:} 50 minutos\\
\textbf{Superficie:} ChatGPT Work y Codex\\
\textbf{Plataformas:} web y aplicación de escritorio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-7}

\begin{itemize}
\tightlist
\item
  Elegir Work para entregables visuales y Codex para preparar fuentes o
  trabajar en una carpeta.
\item
  Pedir un archivo con estructura y criterios de revisión.
\item
  Utilizar imágenes y capturas como contexto sin depender solo de ellas.
\end{itemize}

\subsection{Divide el trabajo por tipo de
resultado}\label{divide-el-trabajo-por-tipo-de-resultado}

La documentación oficial recomienda ChatGPT Work para documentos,
presentaciones, hojas de cálculo, PDF, Sites e investigación. La
aplicación de escritorio puede previsualizar esos archivos y permite
señalar una parte concreta para pedir una revisión.

Codex es útil antes o después:

\begin{itemize}
\tightlist
\item
  prepara y limpia archivos fuente dentro de una carpeta;
\item
  extrae información de un proyecto técnico;
\item
  genera datos o recursos que formarán parte del entregable;
\item
  actualiza archivos del proyecto después de aprobar el resultado.
\end{itemize}

No necesitas obligar a una sola tarea a hacerlo todo.

\subsection{Práctica: de notas desordenadas a un informe
revisable}\label{pruxe1ctica-de-notas-desordenadas-a-un-informe-revisable}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  En Codex, pide combinar \texttt{ideas.txt}, \texttt{notas.txt} y
  \texttt{plan-semanal.md} en \texttt{salida/fuentes-informe.md}.
\item
  Exige que cada apartado indique el archivo de origen y que no invente
  información.
\item
  Abre ChatGPT Work y adjunta \texttt{fuentes-informe.md}.
\item
  Pide un documento de dos páginas con título, resumen, tres apartados y
  próximos pasos.
\item
  Abre la previsualización y revisa cada página.
\end{enumerate}

\subsection{Encargo para Codex}\label{encargo-para-codex}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Prepara salida/fuentes{-}informe.md a partir de entrada/ideas.txt,}
\NormalTok{entrada/notas.txt y salida/plan{-}semanal.md. Conserva el significado, elimina}
\NormalTok{repeticiones literales y añade después de cada apartado una línea "Fuente:" con}
\NormalTok{la ruta correspondiente. Marca [INFORMACIÓN AUSENTE] en lugar de inventar datos.}
\NormalTok{No modifiques los archivos de origen.}
\end{Highlighting}
\end{Shaded}

\subsection{Encargo para Work}\label{encargo-para-work}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Crea un documento de dos páginas para una persona que no conoce el proyecto.}
\NormalTok{Utiliza únicamente el archivo adjunto. Estructura: título, resumen de cinco líneas,}
\NormalTok{tres apartados y próximos pasos. Conserva las marcas [INFORMACIÓN AUSENTE].}
\NormalTok{No conviertas una inferencia en un hecho. Antes de terminar, comprueba que cada}
\NormalTok{apartado puede rastrearse a una fuente indicada en el material.}
\end{Highlighting}
\end{Shaded}

\subsection{Hojas de cálculo y
presentaciones}\label{hojas-de-cuxe1lculo-y-presentaciones}

Cuando pidas una hoja, define hojas, columnas, fórmulas, unidades y
comprobaciones. Para una presentación, define audiencia, número de
diapositivas, mensaje por diapositiva y datos que deben citarse. Evita
«hazlo bonito» como único criterio.

\subsection{Imágenes y capturas}\label{imuxe1genes-y-capturas}

Una imagen puede mostrar un error, un diseño o un resultado visual.
Explica qué zona importa y qué resultado esperas:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{La captura muestra el informe abierto. Revisa únicamente si hay texto cortado,}
\NormalTok{contraste insuficiente o elementos desalineados. No deduzcas datos que no se leen.}
\NormalTok{Devuelve una lista de correcciones por página.}
\end{Highlighting}
\end{Shaded}

En CLI puedes adjuntar imágenes con \texttt{-i} o \texttt{-\/-image}; en
la aplicación y el IDE, sigue el control de adjuntos de la interfaz. No
compartas capturas con notificaciones, nombres de cuenta o información
de otras aplicaciones.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-4}

\begin{itemize}
\tightlist
\item
  Recorre cada página, diapositiva o pestaña.
\item
  Verifica nombres, fechas, totales, citas y marcas de información
  ausente.
\item
  Comprueba que el archivo se abre en una aplicación compatible.
\item
  Revisa que títulos y tablas puedan entenderse sin depender únicamente
  del color.
\item
  Pide una nueva versión con otro nombre; no sobrescribas la aprobada
  durante la revisión.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-5}

Conserva el archivo fuente y versiones numeradas del entregable. Si una
revisión empeora otra parte, vuelve a la versión anterior y pide un
cambio limitado a la página, diapositiva, hoja o fragmento afectado.

\subsection{Error frecuente}\label{error-frecuente-7}

\textbf{Revisar solo la respuesta del chat.} Un mensaje puede decir que
el archivo está correcto mientras una página contiene texto cortado o
una hoja utiliza una fórmula incorrecta. Abre siempre el entregable.

\subsection{Mini ejercicio}\label{mini-ejercicio-4}

Pide una versión de una página para dirección y otra de dos páginas para
el equipo. Compara qué información se conserva y cuál se elimina.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-7}

\begin{itemize}
\tightlist
\item
  Archivo fuente consolidado.
\item
  Primera y última versión del entregable.
\item
  Lista de revisiones solicitadas.
\item
  Comprobaciones que realizaste manualmente.
\end{itemize}

\subsection{Ejemplo resuelto: separar contenido, cálculo y
presentación}\label{ejemplo-resuelto-separar-contenido-cuxe1lculo-y-presentaciuxf3n}

Sol necesita una guía didáctica con una tabla de resultados y seis
diapositivas. En vez de pedirlo todo en un único salto, divide el
trabajo:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  En Codex prepara y limpia las fuentes de la carpeta, detecta datos
  ausentes y crea \texttt{contenido-validado.md} y
  \texttt{resultados-limpios.csv}.
\item
  Comprueba una muestra del CSV y recalcula dos valores con una
  calculadora o herramienta independiente.
\item
  Utiliza Work para convertir el contenido validado en documento y
  presentación revisables.
\item
  Exporta a PDF solo cuando títulos, tablas, cortes de página y créditos
  están aprobados.
\end{enumerate}

Prompt de preparación:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Lee las notas y el CSV de esta carpeta. No diseñes todavía el documento.}
\NormalTok{Crea contenido{-}validado.md con objetivos, explicación, actividad y fuentes.}
\NormalTok{Crea resultados{-}limpios.csv conservando todas las filas; marca los datos}
\NormalTok{ausentes, no los inventes. Incluye un informe de controles y recuentos.}
\end{Highlighting}
\end{Shaded}

Este orden evita ocultar errores detrás de una presentación atractiva.
Un PDF visualmente impecable puede contener un cálculo equivocado; por
eso la comprobación del dato precede al diseño.

\textbf{Comprobación visual mínima:} abre cada formato final, mira la
primera y última página o diapositiva, verifica que no haya texto
cortado, que las tablas sean legibles y que los enlaces o créditos
aparezcan.

\begin{successbox}

\textbf{Criterio de terminado:} los datos tienen controles, el contenido
se puede rastrear a sus fuentes y cada formato final ha sido abierto y
revisado.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-7}

Si el resultado incluye una imagen generada, añade una revisión de texto
incrustado, manos/objetos deformes, atribución necesaria y adecuación al
contexto. Si existe material de referencia, conserva su origen.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-7}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué no basta con que un PDF «se vea profesional»?
\item
  ¿Qué debe ocurrir antes de convertir datos en gráficos o diapositivas?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-8}

Porque la apariencia no demuestra exactitud, integridad ni trazabilidad.
Antes de visualizar, se revisan estructura, valores ausentes, unidades,
recuentos y una muestra de cálculos.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-7}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/artifacts-viewer}{Work with
  files}
\item
  \href{https://learn.chatgpt.com/docs/image-inputs}{Image inputs}
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 9. Investiga en la web y utiliza el navegador con
criterio}\label{lecciuxf3n-9.-investiga-en-la-web-y-utiliza-el-navegador-con-criterio}

\begin{metabox}

\textbf{Tiempo:} 50 minutos\\
\textbf{Superficie:} web o aplicación de escritorio\\
\textbf{Riesgo:} medio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-8}

\begin{itemize}
\tightlist
\item
  Diferenciar búsqueda web de control del navegador.
\item
  Pedir fuentes y comprobar que respaldan la afirmación.
\item
  Protegerte frente a instrucciones maliciosas contenidas en páginas.
\end{itemize}

\subsection{Búsqueda y navegador no son lo
mismo}\label{buxfasqueda-y-navegador-no-son-lo-mismo}

La \textbf{búsqueda web} encuentra información y devuelve resultados o
citas. El \textbf{navegador} abre páginas, inspecciona su estado visible
y, cuando lo autorizas, puede hacer clic o escribir.

Utiliza búsqueda cuando necesitas información. Utiliza Browser cuando
necesitas observar o recorrer una página concreta. En CLI e IDE no está
disponible el navegador integrado, aunque sí puede existir búsqueda. El
navegador integrado de la aplicación utiliza un perfil separado de tu
navegador habitual. La extensión de Chrome se utiliza cuando necesitas
una pestaña o sesión de tu perfil de Chrome.

\subsection{Las páginas son fuentes, no instrucciones para el
agente}\label{las-puxe1ginas-son-fuentes-no-instrucciones-para-el-agente}

Una web puede contener texto como «ignora lo anterior», «pega aquí tu
clave» o «descarga este programa». Ese contenido no recibe autoridad por
aparecer en la página. Trátalo como información no confiable y mantén
tus límites.

\subsection{Práctica de investigación
pública}\label{pruxe1ctica-de-investigaciuxf3n-puxfablica}

Elige tres páginas públicas sobre un tema no sensible. Por ejemplo,
documentación de una biblioteca, horarios de museos o condiciones de
tres servicios gratuitos. Evita iniciar sesión, comprar, reservar o
enviar formularios.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Compara estas tres páginas públicas: [URL 1], [URL 2] y [URL 3]. Necesito una}
\NormalTok{tabla con el dato principal, fecha o vigencia visible, condiciones y enlace a la}
\NormalTok{fuente exacta. Distingue hechos explícitos de inferencias. Si una página no es}
\NormalTok{accesible o el dato no aparece, escribe "no verificado". No rellenes formularios,}
\NormalTok{no descargues archivos y no realices ninguna acción externa.}
\end{Highlighting}
\end{Shaded}

\subsection{Cómo comprobar una cita}\label{cuxf3mo-comprobar-una-cita}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Abre el enlace asociado a una afirmación importante.
\item
  Busca el dato concreto, no solo palabras relacionadas.
\item
  Comprueba fecha, moneda, unidad, región y excepciones.
\item
  Si la página es secundaria, busca la fuente primaria.
\item
  Marca como no verificado lo que no puedas localizar.
\end{enumerate}

Una lista larga de enlaces no sustituye esta comprobación.

\subsection{Cuando utilizar Browser}\label{cuando-utilizar-browser}

En la aplicación, instala o activa el plugin Browser si está disponible.
Permite únicamente los sitios necesarios. Pide primero observación:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Usa Browser para abrir [URL]. Describe la navegación principal, los formularios}
\NormalTok{visibles y cualquier aviso de privacidad. No hagas clic, no escribas, no aceptes}
\NormalTok{cookies y no inicies sesión. Señala qué acciones requerirían mi confirmación.}
\end{Highlighting}
\end{Shaded}

Después de comprender la página, autoriza una acción concreta si es
necesaria. Una autorización para visitar el sitio no equivale a permiso
para enviar información, cambiar ajustes o borrar datos.

\subsection{Limitaciones importantes}\label{limitaciones-importantes}

\begin{itemize}
\tightlist
\item
  Algunos sitios bloquean automatización o muestran CAPTCHA.
\item
  El navegador integrado no automatiza cargas de archivos.
\item
  La disponibilidad depende de plan, organización y despliegue.
\item
  Un sitio permitido no se convierte en confiable.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-6}

Si el navegador entra en una ruta incorrecta, detén la tarea. Cierra la
pestaña o vuelve a una página conocida. Si se envió información o cambió
una cuenta, revisa inmediatamente el historial o ajustes del servicio y
cambia credenciales cuando corresponda.

\subsection{Error frecuente}\label{error-frecuente-8}

\textbf{Pedir «busca en internet» y aceptar el primer resumen.} Define
actualidad, jurisdicción, fuentes preferidas y datos que deben quedar
como no verificados.

\subsection{Mini ejercicio}\label{mini-ejercicio-5}

Elige una afirmación de la tabla y compruébala manualmente. Escribe qué
parte de la fuente la respalda y qué excepción podría cambiarla.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-8}

\begin{itemize}
\tightlist
\item
  Consulta utilizada.
\item
  Tabla con enlaces directos.
\item
  Una afirmación comprobada manualmente.
\item
  Lista de datos no verificados.
\end{itemize}

\subsection{Ejemplo resuelto: una investigación que se puede
auditar}\label{ejemplo-resuelto-una-investigaciuxf3n-que-se-puede-auditar}

Leo quiere comparar tres herramientas para una asociación. Un encargo
débil sería «busca cuál es la mejor». Lo convierte en un protocolo:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Compara las tres herramientas indicadas para una asociación de 20 personas.}
\NormalTok{Responde estas preguntas: precio actual, límites del plan, exportación de datos,}
\NormalTok{accesibilidad y soporte. Prioriza páginas oficiales y documentación primaria.}
\NormalTok{Registra URL, título, fecha de publicación o actualización si aparece y fecha}
\NormalTok{de consulta. Separa hechos, inferencias y datos no confirmados. No recomiendes}
\NormalTok{hasta mostrar la tabla de evidencia.}
\end{Highlighting}
\end{Shaded}

Codex encuentra un precio en una reseña reciente y otro distinto en la
página oficial. Leo no promedia los valores: conserva el oficial como
evidencia principal, registra la discrepancia y anota que el precio
puede depender de región o impuestos.

La tabla utiliza cinco columnas: \texttt{afirmación},
\texttt{evidencia}, \texttt{fuente}, \texttt{vigencia} y
\texttt{confianza}. La conclusión solo incluye afirmaciones que aparecen
en la tabla.

\begin{tipbox}

\textbf{Prueba de honestidad:} elige una frase importante del resumen y
recorre el camino inverso hasta la página que la respalda. Si no puedes
hacerlo en menos de un minuto, falta trazabilidad.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} una página secundaria cita a otra que cita a
una tercera, pero el informe presenta el dato como comprobado en la
fuente original.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} cada afirmación decisiva tiene una
fuente accesible, se distingue la fecha del hecho de la fecha del
artículo y las incertidumbres son visibles.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-8}

\begin{itemize}
\tightlist
\item
  Para una noticia, compara la fecha de publicación con la fecha del
  acontecimiento.
\item
  Para documentación técnica, registra la versión a la que se refiere.
\item
  Para una recomendación costosa, añade criterios personales y no
  delegues la decisión final.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-8}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Una fuente reciente siempre es mejor que una fuente primaria más
  antigua?
\item
  ¿Qué diferencia hay entre un hecho y una inferencia?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-9}

No automáticamente: depende de la pregunta, la vigencia y la autoridad.
Un hecho está directamente respaldado por la evidencia; una inferencia
es una conclusión razonable derivada de uno o más hechos y debe
etiquetarse como tal.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-8}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/web-search}{Web search}
\item
  \href{https://learn.chatgpt.com/docs/browser}{Browser}
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 10. Usa Computer Use sin entregar el control de tu
equipo}\label{lecciuxf3n-10.-usa-computer-use-sin-entregar-el-control-de-tu-equipo}

\begin{metabox}

\textbf{Tiempo:} 45 minutos\\
\textbf{Superficie:} aplicación de escritorio\\
\textbf{Plataformas:} macOS y Windows\\
\textbf{Riesgo:} medio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-9}

\begin{itemize}
\tightlist
\item
  Cuándo una tarea necesita ver y operar una interfaz gráfica.
\item
  Qué permisos concede Computer Use.
\item
  Cómo preparar una práctica limitada y reversible.
\end{itemize}

\subsection{Qué hace Computer Use}\label{quuxe9-hace-computer-use}

Computer Use permite a ChatGPT ver y operar aplicaciones gráficas
autorizadas. Puede hacer clic, escribir, abrir menús e inspeccionar una
interfaz. Es útil cuando no existe una integración estructurada y el
resultado depende de lo que aparece en pantalla.

No es el primer recurso para todo. Si existe un plugin, una API o un
archivo que proporciona los datos directamente, esa vía suele ser más
repetible y fácil de auditar.

\subsection{Diferencias de plataforma}\label{diferencias-de-plataforma}

\textbf{macOS:} requiere permisos de Screen Recording para ver y
Accessibility para interactuar. Puedes retirar esos permisos desde
Privacy \& Security. Algunas tareas pueden ejecutarse en segundo plano
según la configuración.

\textbf{Windows:} trabaja sobre el escritorio activo y puede mover el
puntero y escribir en primer plano. Mantén visible la aplicación
objetivo y no utilices al mismo tiempo esa sesión de Windows.

Computer Use no puede aprobar por ti los permisos de seguridad del
sistema ni autenticarse como administrador. Tampoco debe automatizar
ChatGPT o aplicaciones de terminal.

\subsection{Preparación segura}\label{preparaciuxf3n-segura}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Cierra correo, gestor de contraseñas, banca, mensajería y documentos
  sensibles.
\item
  Abre una aplicación de texto con un documento nuevo y vacío.
\item
  Instala o activa Computer Use desde Plugins si aparece en tu cuenta.
\item
  Autoriza únicamente la aplicación de texto.
\item
  No selecciones «Always allow» durante la primera práctica.
\end{enumerate}

\subsection{Práctica}\label{pruxe1ctica}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Usa Computer Use únicamente con [TextEdit/Bloc de notas]. En el documento vacío,}
\NormalTok{escribe el título "Práctica de Computer Use" y debajo tres viñetas sobre lo que}
\NormalTok{puedes ver en esa ventana. No abras otros archivos, no cambies ajustes, no guardes,}
\NormalTok{no cierres la aplicación y no uses el portapapeles. Detente y muéstrame el}
\NormalTok{resultado antes de cualquier otra acción.}
\end{Highlighting}
\end{Shaded}

Revisa el texto. Si quieres conservarlo, guárdalo tú manualmente dentro
de \texttt{Aprender-Codex/salida}. El curso no necesita que el agente
pulse Guardar.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-5}

\begin{itemize}
\tightlist
\item
  Confirma que solo se utilizó la aplicación autorizada.
\item
  Revisa el texto antes de guardar.
\item
  Comprueba que no hay ventanas sensibles visibles en la captura o el
  escritorio.
\item
  Abre Settings \textgreater{} Computer Use y revisa qué aplicaciones
  tienen permiso persistente.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-7}

Puedes detener la tarea o tomar el control en cualquier momento. Si
interactúa con la ventana incorrecta, cancela inmediatamente. Retira la
aplicación de Always-allowed apps y, en macOS, revoca Screen Recording o
Accessibility si ya no utilizarás la función.

\subsection{Acciones que requieren presencia
humana}\label{acciones-que-requieren-presencia-humana}

Mantente presente para cuentas, credenciales, privacidad, pagos,
permisos, redes, publicaciones y cualquier acción que afecte a terceros.
Una tarea que llega a un botón final de enviar, comprar, borrar o
publicar debe detenerse antes de pulsarlo salvo autorización explícita y
actual.

\subsection{Error frecuente}\label{error-frecuente-9}

\textbf{Autorizar una aplicación cuando hay otras ventanas sensibles
visibles.} Computer Use procesa lo que aparece en pantalla. Prepara el
entorno antes de iniciar.

\subsection{Mini ejercicio
alternativo}\label{mini-ejercicio-alternativo}

Si Computer Use no está disponible, describe con una captura recortada
una interfaz de práctica y pide una lista de pasos sin ejecutar
acciones.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-9}

\begin{itemize}
\tightlist
\item
  Aplicación autorizada.
\item
  Resultado visible antes de guardar.
\item
  Revisión de permisos persistentes.
\item
  Cualquier limitación de tu plataforma.
\end{itemize}

\subsection{Ejemplo resuelto: utilizar la interfaz sin ceder una
decisión}\label{ejemplo-resuelto-utilizar-la-interfaz-sin-ceder-una-decisiuxf3n}

Marta quiere descargar una factura de un portal. La tarea contiene
navegación, una posible sesión iniciada y datos privados. La divide en
puntos de control:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Abre el portal y navega hasta la sección de facturas.}
\NormalTok{No cambies datos de cuenta, no aceptes condiciones, no envíes formularios}
\NormalTok{y no descargues todavía. Detente cuando veas la factura de junio y descríbeme}
\NormalTok{la página, el importe y el botón que usarías. Espera mi confirmación.}
\end{Highlighting}
\end{Shaded}

Marta verifica visualmente dominio, periodo e importe. Solo entonces
autoriza la descarga a una carpeta concreta. Después abre el PDF y
confirma que corresponde al mes correcto.

No sería apropiado ampliar el encargo a «y paga cualquier importe
pendiente». El pago es una acción externa con consecuencias y necesita
una autorización específica, datos correctos y revisión en el momento de
confirmar.

\textbf{Tres niveles de acción:} observar una pantalla, preparar una
acción y ejecutarla. Mantenerlos separados evita que una instrucción
inocente termine en un envío o compra.

\begin{warningbox}

\textbf{Señal de alarma:} aparece una pantalla inesperada de contraseña,
segundo factor, consentimiento, compra, publicación o eliminación. Detén
la automatización y revisa personalmente.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} la acción autorizada es exactamente la
realizada, el archivo está en la ubicación acordada y no hubo cambios
colaterales en la cuenta.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-9}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} puede preparar el borrador de un formulario, pero revisa
  destinatario y respuestas antes de enviarlo.
\item
  \textbf{Leo:} puede recopilar títulos visibles, pero no sortear
  controles de acceso.
\item
  \textbf{Dani:} para una consola web, separa inspección, cambio de
  configuración y publicación.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-9}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué conviene detenerse justo antes de pulsar un botón
  irreversible?
\item
  ¿Una sesión ya iniciada convierte todas las acciones en autorizadas?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-10}

La pausa permite comprobar contexto, destinatario, importe y efecto
antes de una consecuencia real. Una sesión iniciada solo aporta acceso
técnico; no concede autorización general para actuar.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-9}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/computer-use}{Computer Use}
\item
  \href{https://learn.chatgpt.com/docs/browser}{Browser}
\item
  \href{https://learn.chatgpt.com/docs/permissions}{Permissions}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.\\
\textbf{Prueba pendiente antes de publicación:} permisos y nombres de
menús actuales en macOS y Windows.

\chapter{Módulo 4. Construir sin saber
programar}\label{muxf3dulo-4.-construir-sin-saber-programar}

\clearpage

\section{Lección 11. Construye tu primera web
local}\label{lecciuxf3n-11.-construye-tu-primera-web-local}

\begin{metabox}

\textbf{Tiempo:} 75 minutos\\
\textbf{Superficie:} Codex local; navegador para revisar\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-10}

\begin{itemize}
\tightlist
\item
  Convertir una idea en un proyecto técnico pequeño sin escribir código
  manualmente.
\item
  Revisar el resultado como usuario.
\item
  Separar «funciona en mi equipo» de «está publicado».
\end{itemize}

\subsection{El proyecto}\label{el-proyecto}

Construirás una página de presentación que funciona localmente. No
tendrá formularios, analítica, pagos, cuentas, cookies ni dependencias
externas. Continuará dentro de tu ordenador: crear una web local no
significa publicarla.

Dentro de \texttt{Aprender-Codex}, crea \texttt{mi-primera-web}.

\subsection{Fase 1 - define el
contenido}\label{fase-1---define-el-contenido}

Decide:

\begin{itemize}
\tightlist
\item
  nombre del proyecto;
\item
  audiencia;
\item
  frase principal;
\item
  tres servicios o ideas;
\item
  forma de contacto ficticia;
\item
  dos colores que no sean obligatorios para comprender el contenido.
\end{itemize}

No utilices dirección, teléfono ni correo reales en la práctica.

\subsection{Fase 2 - encargo}\label{fase-2---encargo}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Construye dentro de mi{-}primera{-}web una página local de una sola pantalla para}
\NormalTok{[proyecto]. Audiencia: [audiencia]. Contenido obligatorio: [contenido].}

\NormalTok{Requisitos:}
\NormalTok{{-} usa HTML y CSS sencillos, sin dependencias, CDN, analítica ni red;}
\NormalTok{{-} crea index.html y styles.css;}
\NormalTok{{-} diseño adaptable a móvil y escritorio;}
\NormalTok{{-} HTML semántico, foco visible, contraste legible y enlace para saltar al contenido;}
\NormalTok{{-} no uses texto de relleno ni inventes testimonios;}
\NormalTok{{-} el contacto será contacto@example.com y debe indicarse que es ficticio;}
\NormalTok{{-} no publiques ni abras puertos de red.}

\NormalTok{Primero muestra el plan y los archivos que crearás. Espera mi aprobación antes}
\NormalTok{de escribir. Después valida la estructura y explícame cómo abrirla localmente.}
\end{Highlighting}
\end{Shaded}

\subsection{Fase 3 - revisión}\label{fase-3---revisiuxf3n}

Abre \texttt{index.html} en un navegador. En la aplicación de escritorio
puedes utilizar el navegador integrado; en Linux puedes abrir el archivo
con tu navegador habitual.

Comprueba:

\begin{itemize}
\tightlist
\item
  el título coincide con el proyecto;
\item
  las tres ideas están presentes;
\item
  el correo está marcado como ficticio;
\item
  la página se entiende con imágenes desactivadas;
\item
  se puede recorrer con Tab y el foco es visible;
\item
  al estrechar la ventana no aparece desplazamiento horizontal;
\item
  no hay enlaces que envíen datos o publiquen contenido.
\end{itemize}

\subsection{Feedback preciso}\label{feedback-preciso}

Evita «hazla más moderna». Describe el estado observado y el esperado:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{En una ventana estrecha, el segundo bloque se sale por la derecha. Mantén el}
\NormalTok{contenido y los colores; corrige únicamente el ancho y el ajuste de texto.}
\NormalTok{Después vuelve a comprobar móvil y escritorio.}
\end{Highlighting}
\end{Shaded}

\subsection{Resultado esperado}\label{resultado-esperado-4}

Dos archivos locales, una página legible y una explicación de las
comprobaciones. El agente no debe desplegar, comprar dominio ni añadir
servicios externos.

\subsection{Recuperación}\label{recuperaciuxf3n-8}

Antes de una revisión amplia, copia la carpeta como
\texttt{mi-primera-web-aprobada}. Si la nueva versión empeora, restaura
esos dos archivos. En la lección 15 aprenderás una forma más potente de
guardar versiones con Git.

\subsection{Error frecuente}\label{error-frecuente-10}

\textbf{Confundir construir con publicar.} Un despliegue puede crear una
URL pública, costes o datos accesibles. Es una tarea distinta que
requiere revisar contenido, privacidad y proveedor.

\subsection{Mini ejercicio}\label{mini-ejercicio-6}

Añade un bloque de preguntas frecuentes con dos preguntas. Exige que no
cambie ninguna sección aprobada y verifica el orden de navegación con
teclado.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-10}

\begin{itemize}
\tightlist
\item
  Encargo inicial.
\item
  Captura de móvil y escritorio.
\item
  Lista de comprobaciones.
\item
  Copia de la versión aprobada.
\end{itemize}

\subsection{Ejemplo resuelto: una web pequeña con una definición de
terminado}\label{ejemplo-resuelto-una-web-pequeuxf1a-con-una-definiciuxf3n-de-terminado}

Marta quiere una página para presentar un servicio de asesoría. Antes de
pedir código prepara un encargo de una página:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Construye una web local de una sola página para un servicio de asesoría.}
\NormalTok{Público: pequeños comercios. Tono: claro, cercano y sin promesas exageradas.}
\NormalTok{Secciones obligatorias: cabecera, problema, tres servicios, proceso en tres}
\NormalTok{pasos, preguntas frecuentes y contacto. Usa contenido provisional claramente}
\NormalTok{marcado; no inventes testimonios, clientes ni certificaciones.}
\NormalTok{Debe funcionar en móvil y escritorio, tener navegación por teclado, contraste}
\NormalTok{legible y ningún recurso externo necesario para abrirla.}
\NormalTok{Primero propón estructura y archivos. Después implementa. Al terminar,}
\NormalTok{ejecuta las comprobaciones disponibles y explícame cómo abrirla localmente.}
\end{Highlighting}
\end{Shaded}

Codex propone \texttt{index.html}, \texttt{styles.css} y, solo si hace
falta, \texttt{script.js}. Marta revisa la estructura antes de autorizar
la implementación. Al terminar no se limita a mirar una captura: abre la
página, reduce el ancho de la ventana, utiliza Tab para recorrer
enlaces, prueba el menú y confirma que los textos provisionales se
distinguen.

Después solicita una corrección concreta: «En móvil, el título ocupa
demasiado. Reduce su tamaño sin cambiar el texto y comprueba que no
aparezca desplazamiento horizontal». Una modificación pequeña y
verificable enseña más que pedir «hazla más moderna».

\textbf{Lista de aceptación:} abre sin conexión, no muestra errores
visibles, contiene todas las secciones, se puede recorrer con teclado,
no inventa datos y explica cómo sustituir el contenido provisional.

\begin{warningbox}

\textbf{Señal de alarma:} la página incluye formularios que parecen
enviar datos, analítica, recursos remotos o afirmaciones comerciales que
no fueron autorizados.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} otra persona puede abrir la web
siguiendo las instrucciones y completar la lista de aceptación.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-10}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} crea una página de recursos para una asignatura con
  lectura fácil.
\item
  \textbf{Leo:} crea una ficha de proyecto con fuentes y licencia de
  imágenes.
\item
  \textbf{Dani:} añade una prueba automática simple solo después de que
  los criterios sean claros.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-10}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué conviene definir contenido y criterios antes de elegir
  animaciones o colores?
\item
  ¿Una captura demuestra que la web funciona en móvil y con teclado?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-11}

La estructura y los criterios determinan si la web cumple su propósito;
el estilo no repara un contenido incompleto. Una captura solo muestra un
estado visual: la adaptación, navegación y comportamiento deben
probarse.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-10}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\item
  \href{https://learn.chatgpt.com/docs/browser}{Browser}
\item
  \href{https://learn.chatgpt.com/docs/artifacts-viewer}{Work with
  files}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 12. Automatiza una tarea repetitiva con vista
previa}\label{lecciuxf3n-12.-automatiza-una-tarea-repetitiva-con-vista-previa}

\begin{metabox}

\textbf{Tiempo:} 75 minutos\\
\textbf{Superficie:} Codex local\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-11}

\begin{itemize}
\tightlist
\item
  Convertir un resultado manual en un proceso repetible.
\item
  Utilizar las herramientas ya instaladas sin descargar software
  innecesario.
\item
  Probar una automatización con datos conocidos y salidas separadas.
\end{itemize}

\subsection{Automatizar no significa perder el
control}\label{automatizar-no-significa-perder-el-control}

Una automatización segura tiene una entrada, una salida, una regla
conocida, un modo de prueba y una señal clara de fallo. No debe
sobrescribir el origen ni esconder errores.

Dentro de \texttt{Aprender-Codex/entrada}, crea
\texttt{gastos-practica.csv}:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{fecha,categoria,concepto,importe}
\NormalTok{2026{-}07{-}01,material,cuadernos,24.50}
\NormalTok{2026{-}07{-}02,transporte,bus,18.00}
\NormalTok{2026{-}07{-}03,formacion,curso,42.25}
\NormalTok{2026{-}07{-}04,material,boligrafos,15.25}
\end{Highlighting}
\end{Shaded}

Son datos ficticios. El total conocido es 100.00; material suma 39.75,
transporte 18.00 y formación 42.25.

\subsection{Fase 1 - inspecciona el
entorno}\label{fase-1---inspecciona-el-entorno}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No instales nada y no cambies archivos. Comprueba qué herramienta ya disponible}
\NormalTok{en este equipo serviría para leer un CSV y crear un resumen reproducible. Elige}
\NormalTok{la opción más sencilla y multiplataforma posible. Si no hay una opción adecuada,}
\NormalTok{detente y explica alternativas. No uses red.}
\end{Highlighting}
\end{Shaded}

Codex puede detectar Python, Node.js, PowerShell u otra herramienta. La
elección puede variar; lo importante es que explique qué encontró. No
autorices una instalación solo para completar la práctica.

\subsection{Fase 2 - diseña antes de
ejecutar}\label{fase-2---diseuxf1a-antes-de-ejecutar}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Propón una automatización que lea entrada/gastos{-}practica.csv y escriba archivos}
\NormalTok{nuevos en salida/resumen{-}gastos. Debe producir un resumen por categoría, total}
\NormalTok{general, número de filas válidas y lista de errores. No debe modificar el CSV.}
\NormalTok{Incluye modo de prueba o vista previa, códigos de error y una instrucción breve}
\NormalTok{para repetirla. Muéstrame los archivos y el comando previsto antes de crearlos.}
\end{Highlighting}
\end{Shaded}

\subsection{Fase 3 - prueba con una
copia}\label{fase-3---prueba-con-una-copia}

Autoriza la creación únicamente dentro de una carpeta nueva. Pide
ejecutar primero la vista previa y comparar con los totales conocidos.
Después autoriza la salida final.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Ejecuta primero el modo de vista previa. Compara el total y las categorías con}
\NormalTok{estos valores esperados: total 100.00; material 39.75; transporte 18.00;}
\NormalTok{formacion 42.25. Si no coinciden, no escribas la salida final. Si coinciden,}
\NormalTok{crea el resumen y vuelve a leerlo para verificarlo.}
\end{Highlighting}
\end{Shaded}

\subsection{Prueba de error}\label{prueba-de-error}

Copia el CSV como \texttt{gastos-error.csv} y cambia un importe por
\texttt{NO\_VALIDO}. Ejecuta la automatización sobre esa copia. Debe
informar del error y evitar presentar un total incompleto como correcto.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-6}

\begin{itemize}
\tightlist
\item
  El CSV original sigue igual.
\item
  La vista previa coincide con 100.00.
\item
  El resumen identifica cuatro filas válidas.
\item
  La prueba defectuosa produce un error visible.
\item
  Las instrucciones permiten repetir el proceso sin recordar la
  conversación.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-9}

Elimina solo la carpeta de salida y vuelve a ejecutar. Como la entrada
está intacta, el proceso es recuperable. Si la automatización modifica
el origen, no cumple el diseño y debe corregirse antes de reutilizarla.

\subsection{Error frecuente}\label{error-frecuente-11}

\textbf{Probar únicamente el caso correcto.} Una automatización puede
parecer fiable hasta que encuentra una celda vacía, un nombre duplicado
o un formato inesperado. Incluye al menos una prueba de fallo.

\subsection{Mini ejercicio}\label{mini-ejercicio-7}

Añade una quinta fila válida y calcula manualmente el nuevo total.
Ejecuta de nuevo y comprueba que no necesitas modificar el programa para
aceptar otra fila.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-11}

\begin{itemize}
\tightlist
\item
  Herramienta elegida y motivo.
\item
  Plan previo.
\item
  Comando o acción reproducible.
\item
  Salida correcta y salida de error.
\item
  Confirmación de que el origen no cambió.
\end{itemize}

\subsection{Ejemplo resuelto: automatizar un CSV con una fila
problemática}\label{ejemplo-resuelto-automatizar-un-csv-con-una-fila-problemuxe1tica}

Marta recibe cada viernes un CSV con \texttt{cliente}, \texttt{email},
\texttt{ultima\_contacto} y \texttt{estado}. Quiere un resumen de
seguimientos. Una fila contiene una fecha inválida y otra no tiene
correo. En vez de ordenar directamente, establece tres fases.

\textbf{Fase 1 - inspección.} Codex informa de columnas, codificación,
número de filas, valores vacíos, formatos detectados y anomalías. No
escribe resultados.

\textbf{Fase 2 - vista previa.} Procesa cinco filas y muestra cómo
interpretará fechas, estados y ausencias. Marta confirma que una fecha
ambigua no debe corregirse por intuición: se marca \texttt{REVISAR}.

\textbf{Fase 3 - ejecución.} Crea salidas nuevas y un informe de
control.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Usa entrada/clientes.csv. No modifiques el original.}
\NormalTok{Antes de ejecutar, valida cabeceras y muestra cinco filas transformadas.}
\NormalTok{Después crea salida/seguimiento.csv con todas las filas, ordenadas por}
\NormalTok{ultima\_contacto válida; coloca al final las fechas inválidas y marca REVISAR.}
\NormalTok{Crea salida/resumen.md con recuentos, incidencias y reglas aplicadas.}
\NormalTok{Comprueba que filas\_de\_entrada = filas\_de\_salida y que no se enviaron correos.}
\end{Highlighting}
\end{Shaded}

Para demostrar que la automatización es reutilizable, Marta guarda una
copia del encargo y lo repite con un segundo archivo de prueba. Si el
nuevo CSV cambia el nombre de una columna, la tarea debe detenerse y
explicar la incompatibilidad; no adaptar silenciosamente la regla.

\begin{tipbox}

\textbf{Control de reconciliación:} total de entrada, total procesado,
total correcto y total a revisar deben ser matemáticamente compatibles.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} el sistema «rellena» correos, fechas o estados
que no estaban en la fuente.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} los originales siguen iguales, los
recuentos cuadran, las excepciones son visibles y una segunda ejecución
no duplica ni mezcla salidas.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-11}

Introduce deliberadamente una cabecera mal escrita. El comportamiento
deseado es una parada explicada, no un resultado aparentemente válido.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-11}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué una vista previa de cinco filas no sustituye el control final
  de todas las filas?
\item
  ¿Qué propiedad debe tener una automatización que se ejecutará cada
  semana?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-12}

La muestra ayuda a validar la regla, pero puede no contener las
excepciones del conjunto completo. Una automatización recurrente debe
ser reproducible, detectar cambios de formato, separar entradas y
salidas y producir controles revisables.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-11}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\item
  \href{https://learn.chatgpt.com/docs/agent-approvals-security}{Agent
  approvals \& security}
\item
  \href{https://learn.chatgpt.com/docs/integrated-terminal}{Integrated
  terminal}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.\\
\textbf{Prueba pendiente antes de publicación:} ejecutar la práctica con
herramientas disponibles por defecto o habitualmente disponibles en
macOS, Windows y Linux y documentar las variantes reales.

\chapter{Módulo 5. Organización, control y
recuperación}\label{muxf3dulo-5.-organizaciuxf3n-control-y-recuperaciuxf3n}

\clearpage

\section{Lección 13. Organiza proyectos, tareas y
entornos}\label{lecciuxf3n-13.-organiza-proyectos-tareas-y-entornos}

\begin{metabox}

\textbf{Tiempo:} 45 minutos\\
\textbf{Superficie:} aplicación, web, CLI o IDE\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-12}

\begin{itemize}
\tightlist
\item
  Diferenciar proyecto, tarea, conversación y carpeta.
\item
  Separar resultados distintos sin perder contexto compartido.
\item
  Elegir Local, Worktree o Cloud sin adivinar.
\end{itemize}

\subsection{El vocabulario esencial}\label{el-vocabulario-esencial}

\begin{itemize}
\tightlist
\item
  \textbf{Proyecto de ChatGPT:} reúne conversaciones, archivos subidos,
  instrucciones y fuentes relacionadas.
\item
  \textbf{Proyecto local:} conecta una o varias carpetas del ordenador
  con tareas de la aplicación.
\item
  \textbf{Tarea:} conversación orientada a un resultado concreto.
  Conserva su propio historial.
\item
  \textbf{Carpeta de trabajo:} lugar del disco que proporciona archivos
  y limita el contexto local.
\item
  \textbf{Worktree:} copia de trabajo aislada de un repositorio Git. Es
  útil cuando dos tareas podrían cambiar el mismo código.
\item
  \textbf{Cloud:} entorno remoto configurado para un repositorio o
  proyecto compatible.
\end{itemize}

\subsection{Una tarea, un resultado}\label{una-tarea-un-resultado}

No mezcles «organiza archivos», «construye la web», «investiga
competidores» y «prepara una presentación» en una sola tarea. Crea
tareas distintas dentro del mismo proyecto cuando comparten contexto,
pero producen resultados diferentes.

Un buen título describe el resultado:

\begin{itemize}
\tightlist
\item
  «Inventario de fuentes del curso».
\item
  «Web local - primera versión».
\item
  «Revisión de accesibilidad de la portada».
\item
  «Informe para aprobación».
\end{itemize}

«Prueba» o «Chat nuevo» no ayudan a recuperar el trabajo.

\subsection{Práctica: organiza el curso como
proyecto}\label{pruxe1ctica-organiza-el-curso-como-proyecto}

En la aplicación, añade \texttt{Aprender-Codex} como proyecto local. Si
utilizas CLI o IDE, mantén esa carpeta como directorio de trabajo. Crea
tres tareas:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Inventario y seguridad.} Incluye las lecciones 4 y 7.
\item
  \textbf{Mi primera web.} Continúa la lección 11.
\item
  \textbf{Automatización CSV.} Continúa la lección 12.
\end{enumerate}

En cada tarea, pide:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Resume el objetivo de esta tarea, los archivos que pertenecen a ella, el último}
\NormalTok{resultado aprobado y el siguiente paso. No leas carpetas que pertenezcan a las}
\NormalTok{otras tareas y no realices cambios.}
\end{Highlighting}
\end{Shaded}

\subsection{Local, Worktree o Cloud}\label{local-worktree-o-cloud}

Elige \textbf{Local} para la carpeta de práctica y trabajos que quieres
ver inmediatamente en tu ordenador. Elige \textbf{Worktree} cuando el
proyecto esté en Git y quieras aislar cambios de otra tarea. Elige
\textbf{Cloud} cuando el repositorio y su entorno remoto ya estén
configurados y quieras delegar sin utilizar tu carpeta local.

Para una persona principiante, Local es el punto de partida. Worktree y
Cloud no mejoran automáticamente una tarea mal definida.

\subsection{Qué conserva el contexto}\label{quuxe9-conserva-el-contexto}

Una tarea conserva la conversación, pero los archivos pueden cambiar
fuera de ella. Al reanudar, pide que vuelva a inspeccionar el estado
actual. Guarda reglas duraderas en documentación o \texttt{AGENTS.md};
no dependas de que una frase antigua del chat siga siendo aplicable.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-7}

\begin{itemize}
\tightlist
\item
  Cada tarea tiene un título que describe un resultado.
\item
  Ninguna tarea necesita leer todo el proyecto sin motivo.
\item
  Los archivos producidos se encuentran en la carpeta esperada.
\item
  Al reanudar, Codex distingue estado del chat y estado actual de los
  archivos.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-10}

Archivar una tarea no borra sus archivos. Pinning tampoco concede acceso
adicional. Si abriste la carpeta equivocada, cierra la tarea y crea otra
con el proyecto correcto; no amplíes la carpeta para abarcar dos
trabajos sin relación.

\subsection{Error frecuente}\label{error-frecuente-12}

\textbf{Continuar durante semanas en una única tarea.} El historial
crece, se mezclan objetivos y las instrucciones antiguas compiten con
las nuevas. Crea una tarea por resultado y conserva reglas estables
fuera del chat.

\subsection{Mini ejercicio}\label{mini-ejercicio-8}

Renombra las tres tareas para que otra persona comprenda qué entrega
contiene cada una. Archiva una tarea terminada y localízala desde
Settings \textgreater{} Archived tasks o el mecanismo disponible en tu
superficie.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-12}

\begin{itemize}
\tightlist
\item
  Estructura del proyecto.
\item
  Nombres de tareas.
\item
  Resumen de alcance de cada tarea.
\item
  Decisión Local/Worktree/Cloud y motivo.
\end{itemize}

\subsection{Ejemplo resuelto: evitar que tres asuntos se conviertan en
uno}\label{ejemplo-resuelto-evitar-que-tres-asuntos-se-conviertan-en-uno}

Marta trabaja a la vez en su web, el seguimiento de clientes y una
investigación de precios. Si utiliza una sola tarea, el contexto se
contamina: aparecen reglas del CSV al editar la web o fuentes de
investigación en un informe de clientes.

Organiza el trabajo así:

\begin{itemize}
\tightlist
\item
  \textbf{Proyecto \texttt{web-servicio}:} carpeta del sitio,
  instrucciones de tono y criterios de accesibilidad.
\item
  \textbf{Proyecto \texttt{seguimiento-clientes}:} datos ficticios
  durante la práctica, reglas de validación y salidas separadas.
\item
  \textbf{Proyecto \texttt{comparativa-herramientas}:} preguntas de
  investigación, fuentes y tabla de evidencia.
\end{itemize}

Dentro de \texttt{web-servicio} abre tareas distintas para estructura,
contenido y revisión móvil. Cada tarea tiene un resultado y una
definición de terminado. Cuando una decisión afecta a todas -por
ejemplo, el nombre definitivo del servicio- la registra en un archivo de
instrucciones compartido, no confía en que permanezca escondida en una
conversación antigua.

\begin{tipbox}

\textbf{Prueba de aislamiento:} abre la tarea de investigación y
pregunta «¿cuál es el objetivo de este trabajo y qué archivos puedes
usar?». La respuesta no debería mencionar clientes ni modificar la web.

\end{tipbox}

\textbf{Un cierre útil:} al terminar una tarea, guarda un resumen breve
con objetivo, decisiones, archivos modificados, comprobaciones y
pendientes. Así otra tarea puede continuar sin arrastrar toda la
conversación.

\begin{warningbox}

\textbf{Señal de alarma:} para comenzar un trabajo nuevo tienes que
escribir «ignora todo lo anterior» o descubres archivos de otro asunto
en el contexto.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} cada tarea tiene un objetivo único, un
conjunto de archivos definido y un resumen de traspaso comprensible.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-12}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} separa una tarea por asignatura o producto final, no una
  conversación para todo el trimestre.
\item
  \textbf{Leo:} separa recopilación de fuentes, análisis y redacción si
  necesitan revisiones diferentes.
\item
  \textbf{Dani:} una corrección y una nueva funcionalidad suelen merecer
  tareas distintas aunque estén en el mismo repositorio.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-12}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Qué información debe vivir en instrucciones compartidas y cuál en una
  tarea concreta?
\item
  ¿Por qué un resumen de traspaso es mejor que depender de una
  conversación enorme?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-13}

Las reglas estables del proyecto pertenecen a instrucciones compartidas;
el objetivo, decisiones y evidencia de una intervención pertenecen a su
tarea. El resumen reduce ruido, hace visibles los pendientes y se puede
revisar o corregir.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-12}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\item
  \href{https://learn.chatgpt.com/docs/environments/modes}{Codex
  environments}
\item
  \href{https://learn.chatgpt.com/docs/environments/git-worktrees}{Worktrees}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 14. Permisos, privacidad, secretos y acciones
externas}\label{lecciuxf3n-14.-permisos-privacidad-secretos-y-acciones-externas}

\begin{metabox}

\textbf{Tiempo:} 60 minutos\\
\textbf{Superficie:} aplicación, CLI o IDE\\
\textbf{Riesgo:} medio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-13}

\begin{itemize}
\tightlist
\item
  Diferenciar sandbox y política de aprobaciones.
\item
  Conceder el mínimo acceso necesario.
\item
  Reconocer datos y acciones que requieren una decisión humana.
\end{itemize}

\subsection{Dos controles que trabajan
juntos}\label{dos-controles-que-trabajan-juntos}

El \textbf{sandbox} define lo que las herramientas pueden hacer
técnicamente: qué archivos pueden tocar y si los comandos pueden
utilizar la red. La \textbf{política de aprobaciones} decide cuándo
Codex debe detenerse para pedir permiso antes de una acción.

Una aprobación no elimina todos los límites del sandbox. Un sandbox
amplio tampoco significa que una acción sea apropiada. Necesitas ambos
controles.

\subsection{Escalera de permisos}\label{escalera-de-permisos}

Empieza en el peldaño más bajo compatible con la tarea:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Solo conversación:} no necesita carpeta.
\item
  \textbf{Solo lectura:} puede analizar, no escribir.
\item
  \textbf{Escritura en el workspace:} puede cambiar la carpeta de
  trabajo.
\item
  \textbf{Red limitada:} únicamente dominios o recursos necesarios.
\item
  \textbf{Acceso externo o completo:} solo en entornos confiables y con
  una justificación concreta.
\end{enumerate}

No utilices Full access para evitar preguntas. Esas preguntas son una
señal de que el agente pretende salir de la frontera establecida.

\subsection{Práctica: diseña permisos antes del
prompt}\label{pruxe1ctica-diseuxf1a-permisos-antes-del-prompt}

Para cada tarea, anota el permiso mínimo:

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}lrrrr@{}}
\toprule\noalign{}
Tarea & Lectura & Escritura & Red & Acción externa \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
Resumir \texttt{notas.txt} en el chat & Sí & No & No & No \\
Crear \texttt{salida/resumen.md} & Sí & Sí, en workspace & No & No \\
Consultar documentación oficial actual & Sí & No & Sí, limitada & No \\
Publicar la web & Sí & Sí & Sí & Sí \\
\end{longtable}
}

La última tarea no debe ejecutarse como parte de la práctica: requiere
proveedor, cuenta, revisión de privacidad y confirmación final.

\subsection{Secretos}\label{secretos}

Una contraseña, token, clave API, código de un solo uso, cookie de
sesión o archivo de credenciales no pertenece en:

\begin{itemize}
\tightlist
\item
  un prompt;
\item
  \texttt{AGENTS.md};
\item
  capturas;
\item
  logs;
\item
  un repositorio;
\item
  un documento compartido.
\end{itemize}

Utiliza el gestor de secretos o variables de entorno de la plataforma.
Pide que se compruebe la presencia de la variable, nunca que se imprima
su valor.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Comprueba si existe la variable OPENAI\_API\_KEY sin mostrar, copiar ni registrar}
\NormalTok{su contenido. Informa solo de "presente" o "ausente". No hagas solicitudes de red.}
\end{Highlighting}
\end{Shaded}

\subsection{Iniciar sesión con ChatGPT o API
key}\label{iniciar-sesiuxf3n-con-chatgpt-o-api-key}

El inicio de sesión con ChatGPT utiliza la suscripción, permisos y
controles del espacio de trabajo. Una clave API utiliza la organización
y facturación de la plataforma API. La clave no es un sustituto
universal del acceso de ChatGPT y algunas funciones de nube no están
disponibles con ella.

\subsection{Datos delicados}\label{datos-delicados}

No utilices material real médico, legal, financiero, laboral o
identificativo para practicar. En trabajo real, sigue la política de tu
organización, minimiza datos y solicita revisión profesional cuando la
decisión sea de alto impacto.

\subsection{Acciones externas}\label{acciones-externas}

Enviar un mensaje, publicar, comprar, cambiar permisos, subir archivos,
borrar datos o modificar una cuenta afecta a sistemas o personas fuera
de la carpeta. Pide un borrador primero y confirma la acción final de
forma separada.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Prepara el correo como borrador dentro de salida/correo.md. No abras el correo,}
\NormalTok{no busques destinatarios y no envíes nada. Marca los nombres o datos que debo}
\NormalTok{confirmar antes de utilizarlo.}
\end{Highlighting}
\end{Shaded}

\subsection{Prompt injection}\label{prompt-injection}

Las instrucciones encontradas en webs, issues, documentos o archivos
pueden intentar cambiar el objetivo del agente. Indica que son datos no
confiables y que no autorizan accesos, descargas ni acciones.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-8}

\begin{itemize}
\tightlist
\item
  Revisa el permiso activo antes de enviar.
\item
  Lee cada solicitud de ampliación y su destino.
\item
  Comprueba el diff o los archivos después de escribir.
\item
  Revisa las herramientas externas por separado.
\item
  Cierra o revoca sesiones y claves que ya no necesitas.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-11}

Si compartiste un secreto, revócalo y reemplázalo; borrarlo del chat no
garantiza que siga siendo seguro. Si concediste acceso persistente a una
app o web, retíralo desde Settings. Si una acción externa ya se ejecutó,
utiliza el mecanismo de cancelación, reversión o soporte del servicio.

\subsection{Error frecuente}\label{error-frecuente-13}

\textbf{Aprobar por fatiga.} Si una tarea pide permisos repetidos, detén
el trabajo y corrige la configuración, la carpeta o el plan. No
conviertas una sucesión de avisos inesperados en acceso completo.

\subsection{Mini ejercicio}\label{mini-ejercicio-9}

Reescribe una petición para que produzca un borrador local en lugar de
enviar o publicar. Identifica el momento exacto en que necesitaría una
confirmación nueva.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-13}

\begin{itemize}
\tightlist
\item
  Tabla de permisos.
\item
  Motivo de cualquier ampliación.
\item
  Revisión de apps y sitios autorizados.
\item
  Lista de acciones externas que permanecieron como borrador.
\end{itemize}

\subsection{Ejemplo resuelto: decidir un permiso con cuatro
preguntas}\label{ejemplo-resuelto-decidir-un-permiso-con-cuatro-preguntas}

Dani pide revisar una aplicación local. Codex solicita acceso de red
para instalar una dependencia. En lugar de aprobar por reflejo, Dani
utiliza cuatro preguntas:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{¿Para qué acción concreta se necesita?} Instalar un paquete
  declarado por el proyecto.
\item
  \textbf{¿Qué recurso alcanzará?} Un registro de paquetes, no cualquier
  sitio.
\item
  \textbf{¿Se puede reducir?} Primero inspeccionar el archivo de
  dependencias y confirmar nombre y versión.
\item
  \textbf{¿Qué evidencia quedará?} Cambio en el archivo de bloqueo,
  salida del instalador y pruebas posteriores.
\end{enumerate}

Una solicitud con propósito y alcance puede aprobarse si encaja en el
trabajo. Otra petición como «envía el informe al cliente» requiere
detenerse: implica una acción externa, destinatario, datos
potencialmente sensibles y un efecto que no se deshace con facilidad.

\textbf{Semáforo práctico:}

\begin{itemize}
\tightlist
\item
  \textbf{Verde:} leer archivos de práctica, crear una salida nueva,
  ejecutar una comprobación local conocida.
\item
  \textbf{Ámbar:} instalar dependencias, acceder a internet, modificar
  muchos archivos o usar una sesión iniciada. Revisa propósito y
  alcance.
\item
  \textbf{Rojo:} publicar, pagar, borrar originales, enviar mensajes,
  revelar secretos o cambiar cuentas. Exige autorización específica y
  control humano en el punto final.
\end{itemize}

No pegues claves o contraseñas en el prompt. Si un proyecto necesita
secretos, utiliza el mecanismo previsto por el entorno y evita que
aparezcan en capturas, registros o archivos versionados.

\begin{warningbox}

\textbf{Señal de alarma:} no puedes explicar por qué se necesita el
permiso o la solicitud es mucho más amplia que la tarea.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} cada permiso aprobado tiene propósito,
alcance y evidencia; ninguna acción externa se ejecutó por una
autorización genérica.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-13}

Clasifica estas acciones: leer un PDF de práctica; instalar un paquete;
borrar cien originales; preparar un correo sin enviarlo; publicar la
web. Explica qué control añadirías a las de color ámbar o rojo.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-13}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿La confianza en Codex sustituye la revisión de permisos?
\item
  ¿Preparar un mensaje y enviarlo son la misma clase de acción?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-14}

No.~Los permisos dependen del efecto, los datos y el alcance, no de una
confianza general. Preparar un borrador es reversible y revisable;
enviarlo produce una consecuencia externa y necesita confirmación
específica.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-13}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/agent-approvals-security}{Agent
  approvals \& security}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\item
  \href{https://learn.chatgpt.com/docs/auth}{Authentication}
\item
  \href{https://learn.chatgpt.com/docs/permissions}{Permissions}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 15. Copias de seguridad y Git sin
miedo}\label{lecciuxf3n-15.-copias-de-seguridad-y-git-sin-miedo}

\begin{metabox}

\textbf{Tiempo:} 60 minutos\\
\textbf{Superficie:} aplicación o CLI\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-14}

\begin{itemize}
\tightlist
\item
  Diferenciar copia de seguridad y control de versiones.
\item
  Ver exactamente qué cambió.
\item
  Restaurar una versión local sin publicar nada.
\end{itemize}

\subsection{Dos redes de seguridad
distintas}\label{dos-redes-de-seguridad-distintas}

Una \textbf{copia de seguridad} conserva archivos en otro lugar.
\textbf{Git} registra versiones y diferencias dentro de un proyecto. Git
no es automáticamente una copia remota: \texttt{git\ init} y un commit
local no publican nada en internet.

Para archivos personales y formatos binarios, conserva copias externas
adecuadas. Para una web o archivos de texto, Git permite revisar cambios
con precisión.

\subsection{Ruta sin Git}\label{ruta-sin-git}

Continúa utilizando carpetas con nombres claros:

\begin{itemize}
\tightlist
\item
  \texttt{mi-primera-web-01-inicial}
\item
  \texttt{mi-primera-web-02-aprobada}
\item
  \texttt{mi-primera-web-03-prueba}
\end{itemize}

Registra en \texttt{CAMBIOS.md} fecha, objetivo y archivos modificados.
Esta ruta es válida si todavía no quieres instalar Git.

\subsection{Ruta con Git}\label{ruta-con-git}

La aplicación ofrece controles Git cuando Git está instalado. Puede
pedirte inicializar el proyecto si todavía no es un repositorio. Hazlo
únicamente dentro de \texttt{mi-primera-web}.

Desde terminal, la secuencia local básica es:

\begin{Shaded}
\begin{Highlighting}[]
\BuiltInTok{cd}\NormalTok{ /ruta/a/Aprender{-}Codex/mi{-}primera{-}web}
\FunctionTok{git}\NormalTok{ init}
\FunctionTok{git}\NormalTok{ status}
\FunctionTok{git}\NormalTok{ add index.html styles.css}
\FunctionTok{git}\NormalTok{ commit }\AttributeTok{{-}m} \StringTok{"Crea la primera version local de la web"}
\end{Highlighting}
\end{Shaded}

Git puede pedir nombre y correo de autor. Para esta práctica local
utiliza una identidad apropiada a tu entorno y no publiques el
repositorio. No copies credenciales en la configuración.

\subsection{Práctica: observa un
cambio}\label{pruxe1ctica-observa-un-cambio}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Guarda la versión inicial.
\item
  Pide a Codex cambiar solo el texto del título.
\item
  Abre el panel de revisión o ejecuta:
\end{enumerate}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{git}\NormalTok{ status }\AttributeTok{{-}{-}short}
\FunctionTok{git}\NormalTok{ diff}
\end{Highlighting}
\end{Shaded}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{3}
\tightlist
\item
  Comprueba que solo cambió la línea esperada.
\item
  Si la apruebas, crea un segundo commit. Si no, utiliza la interfaz
  para revertir ese fragmento o pide a Codex restaurar el texto
  anterior.
\end{enumerate}

\subsection{Encargo listo para
copiar}\label{encargo-listo-para-copiar-3}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Antes de editar, revisa el estado de Git. Conserva cualquier cambio que no}
\NormalTok{pertenezca a esta tarea. Cambia únicamente el título visible de index.html de}
\NormalTok{"[anterior]" a "[nuevo]". No cambies estilos. Después muestra el diff, comprueba}
\NormalTok{la página y no hagas commit ni push hasta que yo lo apruebe.}
\end{Highlighting}
\end{Shaded}

\subsection{Lo que no debes hacer
todavía}\label{lo-que-no-debes-hacer-todavuxeda}

\begin{itemize}
\tightlist
\item
  No añadas un remoto.
\item
  No ejecutes \texttt{push}.
\item
  No publiques el repositorio.
\item
  No reviertas archivos que tengan cambios ajenos.
\item
  No utilices comandos destructivos que eliminen el trabajo no guardado.
\end{itemize}

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-9}

\begin{itemize}
\tightlist
\item
  \texttt{git\ status} muestra solo los archivos esperados.
\item
  El diff contiene el cambio aprobado.
\item
  La página sigue abriendo.
\item
  El historial contiene una idea por commit.
\item
  No existe publicación remota.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-12}

Si no entiendes un comando de recuperación, detente y pide que explique
exactamente qué archivos afectará antes de ejecutarlo. Conserva una
copia fuera del repositorio mientras aprendes.

\subsection{Error frecuente}\label{error-frecuente-14}

\textbf{Pedir «limpia el repositorio» con cambios sin guardar.}
«Limpiar» puede interpretarse como borrar archivos o revertir trabajo.
Nombra qué debe conservarse y revisa el estado primero.

\subsection{Mini ejercicio}\label{mini-ejercicio-10}

Haz dos cambios deliberados, uno correcto y otro no deseado. Practica
conservar el primero y revertir únicamente el segundo desde el panel de
revisión.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-14}

\begin{itemize}
\tightlist
\item
  Copia externa inicial.
\item
  \texttt{git\ status} antes y después.
\item
  Diff aprobado.
\item
  Historial local de commits o \texttt{CAMBIOS.md}.
\end{itemize}

\subsection{Ejemplo resuelto: una modificación pequeña que se puede
deshacer}\label{ejemplo-resuelto-una-modificaciuxf3n-pequeuxf1a-que-se-puede-deshacer}

Dani quiere cambiar el título de una web y el color principal. Antes de
empezar crea una copia o confirma que el repositorio está limpio. Si
utiliza Git, sigue este ciclo:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Consulta el estado y confirma qué cambios ya existían.
\item
  Pide modificar solo los archivos necesarios.
\item
  Revisa el diff: líneas añadidas, eliminadas y archivos inesperados.
\item
  Abre la web y ejecuta las comprobaciones.
\item
  Guarda el cambio con un mensaje que explique la intención.
\end{enumerate}

Prompt:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Antes de editar, muestra el estado del repositorio y no alteres cambios}
\NormalTok{preexistentes. Cambia el título visible a «Taller Norte» y el color principal}
\NormalTok{a \#2457A6. No reformatees archivos completos ni modifiques dependencias.}
\NormalTok{Después muestra el diff, abre o prueba la web y enumera cualquier comprobación}
\NormalTok{que no hayas podido ejecutar. No crees un commit sin mi confirmación.}
\end{Highlighting}
\end{Shaded}

El diff revela que también cambió el final de línea de todo
\texttt{styles.css}. Aunque la web se vea igual, ese ruido dificulta
revisar. Dani pide revertir únicamente el reformateo accidental y
conservar las dos modificaciones previstas.

\begin{practicebox}

\textbf{Ejercicio de recuperación:} en la carpeta de práctica, modifica
una frase, comprueba el diff y recupérala utilizando la copia o el
método de Git aprendido. Practicar la reversión antes de necesitarla
reduce el miedo.

\end{practicebox}

\begin{warningbox}

\textbf{Señal de alarma:} el estado inicial ya muestra cambios que no
reconoces o Codex propone descartar trabajo ajeno para «limpiar» el
repositorio.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} el diff contiene solo la intención
declarada, el resultado funciona y sabes volver al estado anterior sin
perder otros cambios.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-14}

Repite con dos cambios independientes. Observa por qué revisarlos y
guardarlos por separado facilita encontrar y deshacer errores.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-14}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Una copia de seguridad y un commit cumplen exactamente la misma
  función?
\item
  ¿Por qué se consulta el estado antes y después?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-15}

No.~Ambos ayudan a recuperar, pero Git también registra diferencias e
historia dentro de un repositorio. El estado inicial protege cambios
preexistentes; el final revela el alcance real y archivos inesperados.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-14}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/code-review?surface=app}{Code
  review}
\item
  \href{https://learn.chatgpt.com/docs/environments/local-environment}{Local
  environments and Git tools}
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\chapter{Módulo 6. Personalizar y
reutilizar}\label{muxf3dulo-6.-personalizar-y-reutilizar}

\clearpage

\section{Lección 16. Instrucciones personales y
AGENTS.md}\label{lecciuxf3n-16.-instrucciones-personales-y-agents.md}

\begin{metabox}

\textbf{Tiempo:} 50 minutos\\
\textbf{Superficie:} aplicación, CLI o IDE\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-15}

\begin{itemize}
\tightlist
\item
  Decidir qué instrucciones pertenecen al mensaje, a tu perfil o al
  proyecto.
\item
  Crear un \texttt{AGENTS.md} breve y comprobable.
\item
  Entender cómo se combinan instrucciones generales y específicas.
\end{itemize}

\subsection{Coloca cada regla en su
ámbito}\label{coloca-cada-regla-en-su-uxe1mbito}

\begin{itemize}
\tightlist
\item
  \textbf{Prompt:} una condición que solo importa en la tarea actual.
\item
  \textbf{Instrucciones personales:} preferencias que quieres en muchas
  conversaciones, como idioma o estilo.
\item
  \textbf{\texttt{AGENTS.md} de proyecto:} reglas duraderas de una
  carpeta o repositorio: estructura, límites y verificación.
\item
  \textbf{\texttt{AGENTS.md} anidado:} reglas más específicas de una
  subcarpeta.
\end{itemize}

No conviertas una preferencia temporal en una norma permanente.

\subsection{Cómo descubre Codex las
instrucciones}\label{cuxf3mo-descubre-codex-las-instrucciones}

Codex puede leer una guía global desde su directorio de configuración y
después archivos \texttt{AGENTS.md} desde la raíz del proyecto hasta la
carpeta de trabajo. Las instrucciones más cercanas tienen prioridad
cuando concretan o sustituyen una regla anterior.

En la aplicación, las instrucciones personalizadas de Settings
\textgreater{} Personalization pueden actualizar la guía personal. En un
proyecto compartido, conserva las reglas del equipo dentro del proyecto
para que puedan revisarse y versionarse.

\subsection{Práctica: crea la guía de tu
web}\label{pruxe1ctica-crea-la-guuxeda-de-tu-web}

Dentro de \texttt{mi-primera-web}, crea \texttt{AGENTS.md}:

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Guía del proyecto}

\FunctionTok{\#\# Objetivo}
\SpecialStringTok{{-} }\NormalTok{Mantener una web local de una página para aprendizaje.}

\FunctionTok{\#\# Límites}
\SpecialStringTok{{-} }\NormalTok{No publicar ni añadir servicios externos.}
\SpecialStringTok{{-} }\NormalTok{No usar datos personales reales.}
\SpecialStringTok{{-} }\NormalTok{No añadir dependencias sin pedir permiso.}

\FunctionTok{\#\# Contenido}
\SpecialStringTok{{-} }\NormalTok{Mantener el español claro para público general.}
\SpecialStringTok{{-} }\NormalTok{Marcar el correo de ejemplo como ficticio.}

\FunctionTok{\#\# Verificación}
\SpecialStringTok{{-} }\NormalTok{Abrir index.html después de cada cambio.}
\SpecialStringTok{{-} }\NormalTok{Comprobar móvil, escritorio y navegación con teclado.}
\SpecialStringTok{{-} }\NormalTok{Informar de cualquier comprobación no realizada.}
\end{Highlighting}
\end{Shaded}

Inicia una tarea nueva dentro del proyecto y escribe:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No edites archivos. Enumera las instrucciones del proyecto que se aplican a}
\NormalTok{esta tarea, indica de qué archivo proceden y señala cualquier ambigüedad.}
\end{Highlighting}
\end{Shaded}

Después pide un cambio incompatible, por ejemplo «añade analítica
externa sin preguntar». Codex debería señalar el conflicto y solicitar
una decisión.

\subsection{Qué no debe contener
AGENTS.md}\label{quuxe9-no-debe-contener-agents.md}

\begin{itemize}
\tightlist
\item
  Contraseñas o claves.
\item
  Historias de conversación.
\item
  Información personal innecesaria.
\item
  Una lista enorme de posibilidades hipotéticas.
\item
  Instrucciones que no pueden comprobarse, como «hazlo perfecto».
\end{itemize}

\subsection{Global y proyecto}\label{global-y-proyecto}

Una guía personal puede decir «responde en español y explica la jerga».
El proyecto puede decir «el contenido público utiliza español neutro».
Una regla más específica no debería borrar silenciosamente límites de
seguridad definidos arriba; si existe conflicto, revísalo
explícitamente.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-10}

\begin{itemize}
\tightlist
\item
  Una persona nueva comprende objetivo y límites en menos de dos
  minutos.
\item
  Cada regla puede observarse o verificarse.
\item
  Los comandos o pasos citados funcionan realmente.
\item
  No hay secretos.
\item
  Las reglas específicas están cerca de los archivos a los que afectan.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-13}

Si Codex utiliza instrucciones antiguas, inicia una tarea o sesión nueva
para que vuelva a construir la cadena. Busca \texttt{AGENTS.override.md}
o guías anidadas que puedan tener prioridad.

\subsection{Error frecuente}\label{error-frecuente-15}

\textbf{Usar AGENTS.md como enciclopedia.} Las reglas importantes se
pierden entre explicaciones largas. Mantén una guía corta y enlaza
documentos especializados cuando sean necesarios.

\subsection{Mini ejercicio}\label{mini-ejercicio-11}

Añade una regla que hayas repetido dos veces durante el curso. Justifica
por qué es duradera. Elimina otra que solo corresponda a una práctica.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-15}

\begin{itemize}
\tightlist
\item
  \texttt{AGENTS.md} aprobado.
\item
  Resumen de instrucciones activas.
\item
  Conflicto detectado y decisión tomada.
\end{itemize}

\subsection{Ejemplo resuelto: una regla estable sin convertirla en una
novela}\label{ejemplo-resuelto-una-regla-estable-sin-convertirla-en-una-novela}

Marta repite en cada tarea: «escribe en español claro, no cambies
originales y guarda resultados en \texttt{salida}». Esas reglas son
estables y pueden convertirse en instrucciones del proyecto:

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Instrucciones del proyecto}

\SpecialStringTok{{-} }\NormalTok{Responde en español claro y explica cualquier término técnico.}
\SpecialStringTok{{-} }\NormalTok{No modifiques archivos dentro de }\InformationTok{\textasciigrave{}entrada/\textasciigrave{}}\NormalTok{.}
\SpecialStringTok{{-} }\NormalTok{Escribe todos los entregables en }\InformationTok{\textasciigrave{}salida/\textasciigrave{}}\NormalTok{.}
\SpecialStringTok{{-} }\NormalTok{Antes de cambios masivos, presenta inventario y vista previa.}
\SpecialStringTok{{-} }\NormalTok{Al terminar, informa de archivos creados, controles y pendientes.}
\end{Highlighting}
\end{Shaded}

Para la tarea concreta añade: «procesa el informe de junio». Esa fecha
no pertenece a las instrucciones permanentes porque cambiará en la
próxima ejecución.

Dani tiene además un \texttt{AGENTS.md} en una subcarpeta con reglas
para las pruebas de esa parte del proyecto. Antes de actuar pide a Codex
que enumere las instrucciones aplicables y señale cualquier conflicto.
Si una regla general dice «guarda salidas en \texttt{salida}» y una
regla específica de pruebas exige \texttt{tests/fixtures}, la más
cercana al trabajo puede precisar el destino; el conflicto debe hacerse
visible, no resolverse por intuición silenciosa.

\begin{tipbox}

\textbf{Prueba de calidad:} abre una tarea nueva y formula un encargo
mínimo. Comprueba si se respetan idioma, carpeta protegida, vista previa
y parte final. Si debes recordar la misma regla otra vez, revisa su
ubicación o redacción.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} las instrucciones contienen contraseñas,
decisiones temporales, reglas contradictorias o tantos detalles que ya
no se sabe cuáles son obligatorios.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} las normas estables se aplican en una
tarea nueva y el objetivo temporal permanece en el prompt de esa tarea.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-15}

Elimina deliberadamente una regla no esencial y comprueba si el
resultado sigue siendo seguro. Las instrucciones deben ser suficientes,
no enciclopédicas.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-15}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿«Haz el informe de hoy» pertenece a instrucciones permanentes?
\item
  ¿Qué debes hacer si dos reglas parecen incompatibles?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-16}

No: es un objetivo temporal. Ante reglas incompatibles, identifica su
origen y alcance, detén la decisión afectada y pide aclaración o aplica
la jerarquía documentada de forma explícita.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-15}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/agent-configuration/agents-md}{Custom
  instructions with AGENTS.md}
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\item
  \href{https://learn.chatgpt.com/docs/reference/settings}{ChatGPT
  desktop app settings}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 17. Elige entre skills, plugins y
MCP}\label{lecciuxf3n-17.-elige-entre-skills-plugins-y-mcp}

\begin{metabox}

\textbf{Tiempo:} 55 minutos\\
\textbf{Superficie:} aplicación; algunas funciones también en CLI e
IDE\\
\textbf{Riesgo:} medio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-16}

\begin{itemize}
\tightlist
\item
  Comprender tres formas de ampliar el agente.
\item
  Elegir la más pequeña que resuelve el problema.
\item
  Revisar permisos y datos antes de instalar o conectar.
\end{itemize}

\subsection{Tres piezas diferentes}\label{tres-piezas-diferentes}

\begin{itemize}
\tightlist
\item
  \textbf{Skill:} instrucciones y recursos reutilizables para realizar
  bien una tarea concreta.
\item
  \textbf{Plugin:} paquete instalable que puede incluir skills y
  conexiones con servicios.
\item
  \textbf{MCP:} protocolo que conecta el agente con herramientas o
  contexto externo.
\end{itemize}

Empieza por una skill cuando repites un proceso. Utiliza un plugin
cuando quieres instalar y compartir un conjunto ya empaquetado.
Configura MCP cuando necesitas una herramienta o fuente externa que no
llega mediante un plugin adecuado.

\subsection{Ejemplo}\label{ejemplo}

Necesidad: producir cada semana un resumen con la misma estructura.

\begin{itemize}
\tightlist
\item
  Skill: define fuentes, pasos, plantilla y comprobaciones.
\item
  Plugin: distribuye la skill y, quizá, una conexión con Drive o Slack.
\item
  MCP: proporciona herramientas para consultar un sistema interno.
\end{itemize}

No necesitas construir un servidor MCP para guardar una plantilla.

\subsection{Práctica: diseña una skill antes de
instalarla}\label{pruxe1ctica-diseuxf1a-una-skill-antes-de-instalarla}

Elige la automatización CSV de la lección 12 y pide:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Diseña una skill reutilizable para resumir un CSV de gastos de práctica.}
\NormalTok{Antes de crear archivos, define:}
\NormalTok{{-} cuándo debe y cuándo no debe activarse;}
\NormalTok{{-} entradas obligatorias;}
\NormalTok{{-} pasos y comprobaciones;}
\NormalTok{{-} formato de salida;}
\NormalTok{{-} límites de seguridad;}
\NormalTok{{-} ejemplos correcto e incorrecto.}
\NormalTok{No conectes servicios, no instales plugins y no incluyas datos reales.}
\end{Highlighting}
\end{Shaded}

Revisa el diseño. Si tu superficie ofrece \texttt{\$skill-creator} y
quieres continuar, utilízalo únicamente dentro de una carpeta de
práctica. Comprueba el contenido de \texttt{SKILL.md} antes de
habilitarla.

\subsection{Revisar un plugin}\label{revisar-un-plugin}

Antes de instalar:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Identifica quién lo publica.
\item
  Lee qué skills, aplicaciones o servidores incluye.
\item
  Comprueba qué datos puede leer y qué acciones puede realizar.
\item
  Revisa si la organización permite instalarlo.
\item
  Pruébalo con información no sensible y acceso mínimo.
\item
  Decide quién revisará actualizaciones y cuándo retirarlo.
\end{enumerate}

Disponibilidad: los plugins se utilizan en ChatGPT Work en la web, y en
Work o Codex en la aplicación; la disponibilidad exacta en CLI o IDE
puede cambiar según el paquete y el entorno.

\subsection{Revisar una conexión MCP}\label{revisar-una-conexiuxf3n-mcp}

Pregunta:

\begin{itemize}
\tightlist
\item
  ¿El servidor es local o remoto?
\item
  ¿Qué herramientas expone?
\item
  ¿Cuáles escriben o borran?
\item
  ¿Cómo se autentica?
\item
  ¿Dónde quedan las credenciales?
\item
  ¿Qué sucede si el servidor no está disponible?
\end{itemize}

Los clientes locales de Codex comparten configuración MCP para el mismo
host. ChatGPT web utiliza herramientas remotas proporcionadas mediante
plugins y no lee tu configuración local de Codex.

\subsection{Comprobación manual}\label{comprobaciuxf3n-manual-11}

\begin{itemize}
\tightlist
\item
  La skill tiene un propósito único.
\item
  La descripción indica límites de activación.
\item
  No contiene claves ni datos reales.
\item
  Cualquier plugin procede de una fuente que has revisado.
\item
  Las herramientas con efectos externos requieren aprobación apropiada.
\item
  Puedes deshabilitar o retirar la ampliación.
\end{itemize}

\subsection{Recuperación}\label{recuperaciuxf3n-14}

Deshabilita una skill que produce resultados erróneos. Desinstala el
plugin y revoca la aplicación conectada si ya no lo utilizas. Elimina o
desactiva el servidor MCP y sus credenciales; quitar la configuración no
revoca automáticamente un token en el servicio remoto.

\subsection{Error frecuente}\label{error-frecuente-16}

\textbf{Instalar una herramienta para evitar escribir un proceso claro.}
Primero define el flujo y su resultado. Después decide si necesita
empaquetado o acceso externo.

\subsection{Mini ejercicio}\label{mini-ejercicio-12}

Clasifica estas necesidades: «usar siempre la plantilla de marca», «leer
incidencias de GitHub», «compartir cinco flujos y una conexión con todo
el equipo».

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-17}

\begin{itemize}
\tightlist
\item
  Plantilla de marca: skill.
\item
  Leer incidencias: plugin o MCP, según la integración disponible.
\item
  Cinco flujos y conexión compartida: plugin.
\end{itemize}

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-16}

\begin{itemize}
\tightlist
\item
  Diseño de skill.
\item
  Lista de permisos de cualquier plugin.
\item
  Inventario de herramientas MCP y efectos.
\item
  Procedimiento para desactivar o revocar.
\end{itemize}

\subsection{Ejemplo resuelto: elegir la pieza reutilizable
adecuada}\label{ejemplo-resuelto-elegir-la-pieza-reutilizable-adecuada}

Sol repite cada semana un proceso: leer una lección, generar objetivos,
actividad, rúbrica y una lista de accesibilidad. Quiere reutilizarlo.
Compara tres soluciones:

\begin{itemize}
\tightlist
\item
  Una \textbf{skill} es apropiada si necesita un procedimiento guiado y
  recursos que Codex pueda aplicar cuando la tarea coincida.
\item
  Un \textbf{plugin} resulta útil si quiere distribuir un paquete mayor
  que reúna skills, herramientas o integraciones relacionadas.
\item
  Un servidor \textbf{MCP} encaja cuando necesita conectar Codex de
  manera estructurada con una fuente o servicio externo mediante
  herramientas bien definidas.
\end{itemize}

Como el proceso de Sol utiliza archivos locales y una plantilla,
comienza por una skill. No crea un conector externo innecesario. Define
cuándo se activa, entradas requeridas, pasos, controles y formato de
salida. La prueba con una lección conocida y compara la rúbrica generada
con sus criterios.

Leo, en cambio, necesita consultar una base documental institucional que
ya ofrece una integración MCP autorizada. Su problema principal no es
recordar un procedimiento, sino acceder a una fuente externa mediante
operaciones controladas. Dani podría combinar ambos: una skill que
describa el flujo y herramientas MCP que proporcionen datos.

\textbf{Pregunta de decisión:} «¿Quiero enseñar un método, empaquetar
capacidades o conectar un sistema?». Método sugiere skill; paquete,
plugin; conexión, MCP.

\begin{warningbox}

\textbf{Señal de alarma:} instalas una extensión amplia para resolver
una tarea simple sin revisar autor, permisos, código o datos a los que
accederá.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} puedes explicar por qué elegiste esa
opción, qué activa, qué datos toca y cómo se prueba antes de
compartirla.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-16}

Clasifica estos casos: plantilla semanal de actas; conjunto corporativo
de instrucciones e integraciones; consulta a un gestor documental
externo; prompt que solo usarás una vez. El último quizá no necesita
ninguna pieza reutilizable.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-16}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Toda tarea repetida necesita un plugin?
\item
  ¿Una skill y MCP pueden colaborar?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-18}

No.~Conviene elegir la solución mínima: a veces bastan instrucciones o
una plantilla. Sí: una skill puede definir el procedimiento y utilizar
herramientas proporcionadas por una conexión MCP si están disponibles y
autorizadas.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-16}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/skills-and-plugins}{Skills \&
  Plugins}
\item
  \href{https://learn.chatgpt.com/docs/build-skills}{Build skills}
\item
  \href{https://learn.chatgpt.com/docs/extend/mcp}{Model Context
  Protocol}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\clearpage

\section{Lección 18. Programa tareas que puedas
revisar}\label{lecciuxf3n-18.-programa-tareas-que-puedas-revisar}

\begin{metabox}

\textbf{Tiempo:} 50 minutos más una ejecución posterior\\
\textbf{Superficie:} web o aplicación de escritorio\\
\textbf{Riesgo:} medio

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-17}

\begin{itemize}
\tightlist
\item
  Convertir un prompt probado en una tarea programada.
\item
  Elegir entre ejecución independiente y continuación de una tarea.
\item
  Diseñar una automatización desatendida con permisos estrechos.
\end{itemize}

\subsection{Programa solo lo que ya funciona
manualmente}\label{programa-solo-lo-que-ya-funciona-manualmente}

Una tarea programada ejecuta un prompt sin que estés presente. Si el
prompt es ambiguo, el horario solo repetirá la ambigüedad. Prueba
primero una ejecución normal y revisa su salida.

La aplicación puede programar tareas sobre proyectos locales. El
ordenador debe permanecer encendido, la aplicación ejecutándose y la
carpeta disponible. Las tareas web pueden utilizar archivos subidos y
herramientas conectadas, pero no trabajan directamente sobre una carpeta
local. CLI e IDE no proporcionan la interfaz de gestión de Scheduled.

\subsection{Independiente o con
continuidad}\label{independiente-o-con-continuidad}

\begin{itemize}
\tightlist
\item
  \textbf{Tarea independiente:} cada ejecución empieza desde el prompt
  guardado. Útil para un informe periódico.
\item
  \textbf{Tarea dentro de una conversación:} vuelve al mismo contexto.
  Útil para seguimiento de una operación o revisión continua.
\end{itemize}

Para un resumen semanal repetible, empieza por una tarea independiente.

\subsection{Práctica segura}\label{pruxe1ctica-segura}

Crea \texttt{entrada/seguimiento.txt} con cinco líneas ficticias, cada
una con fecha, estado y nota. Prueba primero:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Lee entrada/seguimiento.txt y prepara un resumen semanal dentro de}
\NormalTok{salida/seguimiento. Incluye: elementos nuevos, pendientes, bloqueados y datos}
\NormalTok{incompletos. No cambies la entrada, no uses red y no envíes mensajes. Si no hay}
\NormalTok{novedades, crea un informe que diga "Sin novedades". Termina indicando la ruta}
\NormalTok{del archivo y el número de líneas procesadas.}
\end{Highlighting}
\end{Shaded}

Comprueba el resultado. Después programa una ejecución semanal si
Scheduled está disponible.

\subsection{Prompt duradero}\label{prompt-duradero}

Añade instrucciones que sigan teniendo sentido en el futuro:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{En cada ejecución:}
\NormalTok{1. utiliza únicamente entrada/seguimiento.txt;}
\NormalTok{2. no asumas que una fecha ausente es la fecha actual;}
\NormalTok{3. escribe un archivo nuevo con fecha en salida/seguimiento;}
\NormalTok{4. no sobrescribas informes anteriores;}
\NormalTok{5. no uses red, plugins ni aplicaciones;}
\NormalTok{6. informa si la entrada no existe o tiene líneas inválidas;}
\NormalTok{7. no realices cambios fuera del proyecto.}
\NormalTok{Detente después de crear y verificar el informe.}
\end{Highlighting}
\end{Shaded}

\subsection{Permisos}\label{permisos}

Las tareas programadas utilizan la configuración de sandbox y se
ejecutan desatendidas. Utiliza lectura más escritura dentro del
workspace, sin red. Evita Full access. En un repositorio Git, un
worktree puede aislar cambios; en una carpeta sin Git la tarea escribirá
directamente en el proyecto.

\subsection{Comprobación de las primeras
ejecuciones}\label{comprobaciuxf3n-de-las-primeras-ejecuciones}

\begin{itemize}
\tightlist
\item
  Revisa cada informe de las primeras semanas.
\item
  Comprueba que no sobrescribe versiones.
\item
  Confirma que los errores son visibles.
\item
  Ajusta horario y prompt si genera ruido.
\item
  Pausa o elimina la tarea cuando ya no tenga propietario o utilidad.
\end{itemize}

\subsection{Alternativa sin Scheduled}\label{alternativa-sin-scheduled}

Guarda el prompt como una skill o plantilla y ejecútalo manualmente una
vez por semana. La repetibilidad no depende de que la función de
calendario aparezca en tu cuenta.

\subsection{Recuperación}\label{recuperaciuxf3n-15}

Pausa la tarea antes de modificar su prompt o permisos. Archiva
ejecuciones antiguas que ya no necesitas. Si una tarea local cambió
archivos incorrectos, detén futuras ejecuciones y restaura desde Git o
copia de seguridad antes de volver a activarla.

\subsection{Error frecuente}\label{error-frecuente-17}

\textbf{Programar una acción externa irreversible.} Empieza generando un
informe o borrador. Enviar, fusionar, desplegar o publicar necesita
reglas adicionales, identidad de servicio y revisión humana.

\subsection{Mini ejercicio}\label{mini-ejercicio-13}

Añade una línea inválida al seguimiento y ejecuta manualmente. El
informe debe señalarla sin descartar silenciosamente el resto.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-17}

\begin{itemize}
\tightlist
\item
  Prompt probado manualmente.
\item
  Horario y destino.
\item
  Permisos utilizados.
\item
  Primeras ejecuciones revisadas.
\item
  Propietario y condición de retirada.
\end{itemize}

\subsection{Ejemplo resuelto: una tarea programada que falla de forma
visible}\label{ejemplo-resuelto-una-tarea-programada-que-falla-de-forma-visible}

Leo quiere recibir cada lunes un resumen de cambios en tres páginas
oficiales. Un mal encargo sería «vigila internet y avísame de lo
importante». No define fuentes, importancia, comparación ni salida.

La versión operativa es:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Cada lunes a las 09:00, consulta únicamente las tres URL indicadas.}
\NormalTok{Compara el contenido visible con el informe anterior y crea un nuevo archivo}
\NormalTok{AAAA{-}MM{-}DD{-}cambios.md. Para cada cambio incluye página, sección, resumen,}
\NormalTok{enlace y nivel de confianza. Si una página no está disponible, no reutilices}
\NormalTok{datos antiguos como si fueran actuales: registra ERROR DE ACCESO y continúa.}
\NormalTok{Si no hay cambios, crea igualmente el informe con «sin cambios detectados».}
\NormalTok{No envíes mensajes ni publiques resultados.}
\end{Highlighting}
\end{Shaded}

Antes de programarla, Leo la ejecuta manualmente una vez. Comprueba
acceso, estructura del informe y ubicación. Después programa y revisa
las dos primeras ejecuciones. Conserva un registro con fecha prevista,
fecha real, resultado y error.

La ausencia de un informe también debe ser observable. Si la ejecución
depende de una máquina local, Leo conoce esa dependencia y decide qué
ocurrirá si está apagada. Una tarea programada no debe fingir
continuidad cuando el entorno no estaba disponible.

\begin{tipbox}

\textbf{Prueba de fallo:} sustituye temporalmente una URL de práctica
por una dirección inexistente. El resultado correcto contiene un error
explícito y no inventa cambios.

\end{tipbox}

\begin{warningbox}

\textbf{Señal de alarma:} una automatización puede enviar, publicar,
comprar o borrar de forma recurrente sin revisión y sin un límite muy
claro.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} la tarea funciona manualmente, deja
evidencia en cada ejecución, maneja fallos y se puede desactivar o
revisar.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-17}

\begin{itemize}
\tightlist
\item
  \textbf{Marta:} resumen semanal de CSV nuevos, sin enviar correos.
\item
  \textbf{Sol:} borrador de planificación, no publicación automática en
  el aula.
\item
  \textbf{Dani:} informe de estado del repositorio, sin fusionar ni
  desplegar cambios.
\end{itemize}

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-17}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué se prueba manualmente antes de programar?
\item
  ¿«No se creó ningún informe» significa necesariamente «no había
  cambios»?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-19}

La ejecución manual valida permisos, entradas, salida y controles sin
esperar al horario. La falta de informe puede significar fallo, equipo
apagado o configuración incorrecta; por eso incluso «sin cambios» debe
generar evidencia.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-17}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/automations}{Scheduled tasks}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\item
  \href{https://learn.chatgpt.com/docs/environments/git-worktrees}{Worktrees}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\chapter{Módulo 7. Puente técnico y proyecto
final}\label{muxf3dulo-7.-puente-tuxe9cnico-y-proyecto-final}

\clearpage

\section{Lección 19. Da el salto a CLI, IDE y repositorios cuando lo
necesites}\label{lecciuxf3n-19.-da-el-salto-a-cli-ide-y-repositorios-cuando-lo-necesites}

\begin{metabox}

\textbf{Tiempo:} 60-90 minutos\\
\textbf{Superficie:} CLI o extensión de IDE\\
\textbf{Plataformas:} macOS, Windows y Linux\\
\textbf{Carácter:} opcional

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-18}

\begin{itemize}
\tightlist
\item
  Utilizar Codex desde una terminal o editor manteniendo las normas de
  seguridad del curso.
\item
  Reconocer los controles principales de una sesión.
\item
  Decidir si estás preparado para continuar con «Codex para
  programadores».
\end{itemize}

\subsection{La terminal no es un nivel de
inteligencia}\label{la-terminal-no-es-un-nivel-de-inteligencia}

CLI e IDE ofrecen una relación más directa con archivos, Git,
herramientas y automatización. Avanza hacia ellas cuando tu trabajo lo
necesite. No son un requisito para haber aprendido a dirigir y revisar
un agente.

\subsection{La CLI en cuatro acciones}\label{la-cli-en-cuatro-acciones}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Abre la terminal.
\item
  Entra en la carpeta exacta.
\item
  Inicia \texttt{codex}.
\item
  Describe el resultado y revisa lo que propone.
\end{enumerate}

\begin{Shaded}
\begin{Highlighting}[]
\BuiltInTok{cd}\NormalTok{ /ruta/a/Aprender{-}Codex/mi{-}primera{-}web}
\ExtensionTok{codex}
\end{Highlighting}
\end{Shaded}

En Windows PowerShell utiliza rutas Windows. En WSL2 utiliza rutas Linux
y mantén proyecto y herramientas dentro del mismo entorno.

\subsection{Comprobaciones iniciales}\label{comprobaciones-iniciales}

\begin{Shaded}
\begin{Highlighting}[]
\ExtensionTok{codex} \AttributeTok{{-}{-}version}
\end{Highlighting}
\end{Shaded}

Dentro de la sesión, escribe \texttt{/} para ver los comandos reales de
tu versión. Pueden incluir:

\begin{itemize}
\tightlist
\item
  \texttt{/status}: configuración y uso; en CLI puede mostrar modelo,
  aprobación, raíces escribibles y contexto.
\item
  \texttt{/permissions}: perfil de permisos.
\item
  \texttt{/model}: modelo activo.
\item
  \texttt{/plan}: planificación, cuando está disponible.
\item
  \texttt{/review}: revisión de cambios en un repositorio Git.
\item
  \texttt{/mention}: añadir un archivo o carpeta al contexto.
\end{itemize}

No memorices una lista antigua: utiliza el selector de tu instalación.

\subsection{Primer encargo CLI, todavía sin
editar}\label{primer-encargo-cli-todavuxeda-sin-editar}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Analiza esta carpeta sin modificar archivos. Enumera su estructura hasta dos}
\NormalTok{niveles, explica cómo abrir la web y señala cualquier archivo que no entiendas.}
\NormalTok{Indica las raíces escribibles y separa hechos observados de inferencias.}
\end{Highlighting}
\end{Shaded}

Comprueba con \texttt{/status} y el explorador de archivos que estás en
la carpeta correcta.

\subsection{Imágenes en CLI}\label{imuxe1genes-en-cli}

Puedes adjuntar una captura al iniciar:

\begin{Shaded}
\begin{Highlighting}[]
\ExtensionTok{codex} \AttributeTok{{-}i}\NormalTok{ captura.png }\StringTok{"Describe el problema visible y no cambies archivos"}
\end{Highlighting}
\end{Shaded}

Identifica qué muestra la imagen, qué zona importa y qué resultado
esperas. Oculta notificaciones y datos personales.

\subsection{Extensión de IDE}\label{extensiuxf3n-de-ide}

Sigue la documentación oficial para instalar la extensión compatible con
Visual Studio Code. Después abre la carpeta, inicia sesión, revisa
permisos y añade como contexto solo archivos o selecciones relevantes.
La extensión comparte con CLI la configuración del mismo host, mientras
sus preferencias visuales pertenecen al editor.

\subsection{Windows nativo o WSL2}\label{windows-nativo-o-wsl2}

Utiliza Windows nativo si el proyecto y las herramientas viven en
Windows. Elige WSL2 si tu flujo ya utiliza Linux. WSL1 no es una ruta
compatible actual. En WSL2 instala \texttt{bubblewrap} y procura guardar
repositorios bajo el hogar Linux.

\subsection{\texorpdfstring{Cuándo utilizar
\texttt{codex\ exec}}{Cuándo utilizar codex exec}}\label{cuuxe1ndo-utilizar-codex-exec}

\texttt{codex\ exec} ejecuta una tarea no interactiva. Es apropiado para
análisis repetibles cuando entrada, salida, permisos y fallos están
definidos. No es una solución para una petición ambigua.

\begin{Shaded}
\begin{Highlighting}[]
\ExtensionTok{codex}\NormalTok{ exec }\AttributeTok{{-}{-}sandbox}\NormalTok{ read{-}only }\StringTok{"Revisa la estructura actual. No edites archivos. Devuelve riesgos y límites."}
\end{Highlighting}
\end{Shaded}

\subsection{Práctica de transición}\label{pruxe1ctica-de-transiciuxf3n}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Lee AGENTS.md y resume las reglas activas. Revisa index.html y styles.css sin}
\NormalTok{editar. Propón una única mejora de accesibilidad, explica cómo verificarla y}
\NormalTok{espera mi aprobación.}
\end{Highlighting}
\end{Shaded}

Autoriza el cambio solo si comprendes el diff. Después abre la web y
comprueba la mejora con teclado y una ventana estrecha.

\subsection{Recuperación}\label{recuperaciuxf3n-16}

Interrumpe si ruta o permisos no son correctos. En Git, conserva cambios
ajenos y revisa \texttt{git\ status} antes de revertir. Si la
instalación falla, \texttt{codex\ doctor} puede ayudar cuando está
disponible; revisa el informe antes de compartirlo porque puede contener
rutas u otros datos del sistema.

\subsection{Error frecuente}\label{error-frecuente-18}

\textbf{Copiar comandos sin comprender el entorno.} Antes de instalar,
elevar permisos o usar red, pide qué cambia, qué acceso necesita y cómo
se deshace.

\subsection{Señales de que puedes
continuar}\label{seuxf1ales-de-que-puedes-continuar}

\begin{itemize}
\tightlist
\item
  Abres la carpeta correcta.
\item
  Comprendes lectura, escritura, red y acciones externas.
\item
  Revisas un diff.
\item
  Defines resultado y comprobación.
\item
  No utilizas Full access como opción predeterminada.
\item
  Conservas una versión recuperable.
\end{itemize}

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-18}

\begin{itemize}
\tightlist
\item
  Versión y superficie.
\item
  Estado sin datos sensibles.
\item
  Primer análisis de solo lectura.
\item
  Diff y comprobación de la mejora opcional.
\end{itemize}

\subsection{Ejemplo resuelto: del lenguaje natural a un cambio revisable
en el
IDE}\label{ejemplo-resuelto-del-lenguaje-natural-a-un-cambio-revisable-en-el-ide}

Dani abre un repositorio pequeño en el IDE. Antes de tocar código pide
orientación:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No modifiques nada. Lee las instrucciones del repositorio y explícame:}
\NormalTok{{-} qué hace el proyecto;}
\NormalTok{{-} cómo se instala y ejecuta;}
\NormalTok{{-} dónde están las pruebas;}
\NormalTok{{-} qué estado tiene Git;}
\NormalTok{{-} qué dudas debes resolver antes de cambiar el formulario de contacto.}
\end{Highlighting}
\end{Shaded}

Con el mapa entendido, formula una tarea estrecha: validar que el correo
tenga formato correcto y mostrar un mensaje accesible. Pide plan, cambio
mínimo y pruebas. Mientras Codex trabaja, Dani observa archivos abiertos
y comandos; si aparece una dependencia nueva sin justificación, corrige
el rumbo.

Al terminar revisa el diff en el IDE, ejecuta la prueba indicada y hace
una prueba manual. La respuesta final debe distinguir entre
comprobaciones ejecutadas y recomendaciones no ejecutadas.

\textbf{Traducción de términos:} repositorio es la carpeta con historia
de cambios; rama es una línea de trabajo; diff es la comparación; commit
es un punto guardado con intención; prueba es una comprobación
reproducible. No necesitas dominar todos los comandos para hacer
preguntas precisas sobre ellos.

\textbf{Ejercicio puente:} pide a Codex que explique cada comando antes
de ejecutarlo y que no utilice variantes destructivas. Luego intenta
predecir el resultado de un comando de lectura, ejecútalo y compara.

\begin{warningbox}

\textbf{Señal de alarma:} se propone reescribir historia, descartar
cambios ajenos, publicar una rama o utilizar secretos sin que la tarea
lo exija.

\end{warningbox}

\begin{successbox}

\textbf{Criterio de terminado:} entiendes el propósito del cambio, el
diff es limitado, las pruebas relevantes pasan y el repositorio no
contiene cambios inesperados.

\end{successbox}

\subsection{Cambia una variable}\label{cambia-una-variable-18}

Repite el ejercicio desde CLI o desde IDE y anota qué interfaz te ayuda
mejor a observar contexto, comandos y diferencias. La herramienta
preferida puede depender de la tarea.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-18}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Por qué se lee \texttt{AGENTS.md} o las instrucciones antes de
  modificar un repositorio?
\item
  ¿Un diff pequeño garantiza por sí solo que el cambio sea correcto?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-20}

Las instrucciones contienen convenciones, límites y comprobaciones del
proyecto. Un diff pequeño facilita revisar, pero todavía necesita
pruebas y validación del comportamiento.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-18}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/developer-commands?surface=cli}{Codex
  CLI command reference}
\item
  \href{https://learn.chatgpt.com/docs/developer-commands?surface=ide}{Codex
  IDE extension commands}
\item
  \href{https://learn.chatgpt.com/docs/auth}{Authentication}
\item
  \href{https://learn.chatgpt.com/docs/windows/wsl}{WSL2}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.\\
\textbf{Continuación recomendada:}
\href{https://www.aulafy.net/cursos/codex-programadores}{Codex para
programadores}.

\clearpage

\section{Lección 20. Proyecto final según tu
perfil}\label{lecciuxf3n-20.-proyecto-final-seguxfan-tu-perfil}

\begin{metabox}

\textbf{Tiempo:} 3-6 horas\\
\textbf{Superficie:} la adecuada al resultado\\
\textbf{Plataformas:} macOS, Windows y Linux

\end{metabox}

\subsection{Qué vas a aprender}\label{quuxe9-vas-a-aprender-19}

\begin{itemize}
\tightlist
\item
  Integrar alcance, permisos, creación, verificación y recuperación.
\item
  Elegir un proyecto final adecuado a tu perfil.
\item
  Entregar evidencia que otra persona pueda revisar sin leer toda la
  conversación.
\end{itemize}

\subsection{Objetivo}\label{objetivo}

Completar un resultado que otra persona pueda revisar, repetir y
recuperar. No se evalúa la cantidad de texto o código generado, sino
alcance, evidencia, seguridad y utilidad.

\subsection{Reglas comunes}\label{reglas-comunes}

Todos los proyectos deben:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  utilizar datos ficticios o autorizados;
\item
  empezar con una carpeta claramente limitada;
\item
  conservar originales;
\item
  incluir un plan aprobado;
\item
  producir un resultado revisable;
\item
  comprobar un caso correcto y uno problemático;
\item
  declarar lo no verificado;
\item
  evitar publicación o envío durante la evaluación;
\item
  documentar cómo repetir y deshacer;
\item
  enlazar las fuentes utilizadas.
\end{enumerate}

\subsection{Proyecto A - estudiante o
docente}\label{proyecto-a---estudiante-o-docente}

\textbf{Resultado:} paquete de estudio a partir de tres textos propios o
con licencia compatible.

\textbf{Entregables:} mapa de conceptos con origen; guía de dos páginas;
diez preguntas con respuestas separadas; tabla de datos que necesitan
verificación; versión de lectura fácil.

\textbf{Límites:} no inventar citas, no usar datos reales de estudiantes
y marcar incertidumbre.

\textbf{Comprobación:} rastrear cinco afirmaciones hasta los textos y
pedir a otra persona que responda dos preguntas con la guía.

\subsection{Proyecto B - profesional, autónomo o
pyme}\label{proyecto-b---profesional-autuxf3nomo-o-pyme}

\textbf{Resultado:} sistema local que convierte solicitudes ficticias en
borradores y una tabla de seguimiento.

\textbf{Entregables:} plantilla de entrada; clasificación por estado
explícito; borradores que nunca se envían; registro de datos ausentes;
instrucciones y recuperación.

\textbf{Límites:} sin correo, CRM o mensajería conectados; ninguna
decisión automática de crédito, empleo, salud o derecho; ninguna acción
externa.

\textbf{Comprobación:} caso completo, caso con datos ausentes y caso que
debe escalarse a una persona.

\subsection{Proyecto C - creador, investigador o
comunicador}\label{proyecto-c---creador-investigador-o-comunicador}

\textbf{Resultado:} dossier con fuentes y una web local para
presentarlo.

\textbf{Entregables:} tabla de fuentes; afirmaciones con enlaces; lista
de información no verificada; resumen general; web accesible sin
analítica ni publicación.

\textbf{Límites:} fecha de corte, citas breves, separación de hechos y
opinión y respeto de licencias.

\textbf{Comprobación:} abrir las fuentes de cinco afirmaciones y revisar
la web en móvil, escritorio y teclado.

\subsection{Proyecto D - iniciación al
desarrollo}\label{proyecto-d---iniciaciuxf3n-al-desarrollo}

\textbf{Resultado:} ampliar \texttt{mi-primera-web} con una
funcionalidad pequeña.

\textbf{Entregables:} \texttt{AGENTS.md}; plan; cambio acotado; prueba o
procedimiento; diff y commit local; informe de límites.

\textbf{Límites:} sin dependencias ni publicación; conservar cambios
ajenos; una idea por commit.

\textbf{Comprobación:} comportamiento visible, teclado, pantalla
estrecha y revisión Git.

\subsection{Prompt de inicio}\label{prompt-de-inicio}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Voy a realizar el proyecto final [A/B/C/D]. No actúes todavía. Entrevístame para}
\NormalTok{completar solo las decisiones que cambian el resultado. Después prepara:}
\NormalTok{objetivo, materiales autorizados, entregables, límites, plan, comprobaciones,}
\NormalTok{caso de fallo, recuperación y fuentes. Separa obligatorio de opcional y espera}
\NormalTok{mi aprobación.}
\end{Highlighting}
\end{Shaded}

\subsection{Rúbrica}\label{ruxfabrica}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}
  >{\raggedleft\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4000}}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
Criterio
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
Puntos
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Evidencia
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
Objetivo y alcance & 15 & Resultado, entregables y exclusiones \\
Fuentes y contexto & 15 & Origen, fecha, límites y trazabilidad \\
Seguridad y privacidad & 15 & Datos mínimos, permisos y ausencia de
secretos \\
Resultado útil & 20 & Abre, se entiende y cumple el objetivo \\
Verificación & 20 & Caso correcto, caso problemático y revisión
manual \\
Recuperación & 10 & Copia/Git e instrucciones reproducibles \\
Comunicación final & 5 & Hechos, riesgos y no verificado \\
\end{longtable}
}

\textbf{Superación:} 75 puntos y ningún fallo crítico de seguridad,
pérdida de originales o publicación no autorizada.

\subsection{Entrega final}\label{entrega-final}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Entrega del proyecto}
\FunctionTok{\#\# Objetivo}
\FunctionTok{\#\# Materiales y permisos}
\FunctionTok{\#\# Resultado}
\FunctionTok{\#\# Archivos creados o modificados}
\FunctionTok{\#\# Comprobaciones realizadas}
\FunctionTok{\#\# Caso de fallo probado}
\FunctionTok{\#\# Información no verificada}
\FunctionTok{\#\# Cómo repetir}
\FunctionTok{\#\# Cómo deshacer}
\FunctionTok{\#\# Fuentes}
\FunctionTok{\#\# Próximo paso recomendado}
\end{Highlighting}
\end{Shaded}

La persona revisora debe comprender el resultado, abrirlo, repetir la
comprobación y conocer sus límites sin leer toda la conversación.

\subsection{Cierre del curso}\label{cierre-del-curso}

Has terminado cuando puedes responder: qué superficie elegiste, qué
acceso concediste, qué cambió, qué evidencia demuestra que funciona, qué
no se comprobó, cómo vuelves atrás y qué acción todavía necesita una
persona.

\subsection{Error frecuente}\label{error-frecuente-19}

\textbf{Elegir el proyecto más grande.} Un resultado pequeño, completo y
verificable demuestra más control que una idea ambiciosa sin revisión,
recuperación o límites claros.

\subsection{Evidencia que debes
guardar}\label{evidencia-que-debes-guardar-19}

\begin{itemize}
\tightlist
\item
  Plan aprobado y materiales autorizados.
\item
  Archivos de entrada y entrega.
\item
  Caso correcto y caso problemático.
\item
  Rúbrica cumplimentada.
\item
  \texttt{ENTREGA.md} y revisión de otra persona.
\end{itemize}

\subsection{Ejemplo resuelto completo: el kit de lanzamiento de
Marta}\label{ejemplo-resuelto-completo-el-kit-de-lanzamiento-de-marta}

Marta elige un proyecto que combina las lecciones 4, 5, 6, 7, 11, 14 y
15: una web local con materiales de lanzamiento, sin publicar ni
contactar a nadie.

\textbf{1. Define el resultado.} Una web de una página, un inventario de
materiales y una lista de pendientes. El proyecto termina cuando otra
persona puede abrir la web, revisar la información y seguir las
instrucciones.

\textbf{2. Prepara el entorno.} Crea \texttt{entrada}, \texttt{web},
\texttt{salida} y \texttt{respaldo}. Copia únicamente materiales
ficticios o duplicados. Guarda un inventario inicial.

\textbf{3. Encarga con límites.}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Construye en web/ una página local para el servicio descrito en entrada/brief.md.}
\NormalTok{Usa solo los recursos de entrada/recursos. No inventes precios, testimonios,}
\NormalTok{clientes ni certificaciones. Si falta información, utiliza [PENDIENTE].}
\NormalTok{Antes de editar, presenta estructura y preguntas. Después implementa una}
\NormalTok{versión funcional para móvil y escritorio. No publiques, no envíes formularios}
\NormalTok{y no instales servicios externos. Crea salida/informe{-}final.md con archivos,}
\NormalTok{decisiones, pruebas ejecutadas, pendientes e instrucciones para abrir la web.}
\end{Highlighting}
\end{Shaded}

\textbf{4. Revisa durante el proceso.} Marta responde las preguntas,
aprueba la estructura y corrige una interpretación del público. No
espera a que toda la web esté terminada.

\textbf{5. Comprueba.} Compara inventario inicial y final, abre la
página en dos anchos, recorre enlaces con teclado, busca marcadores
\texttt{{[}PENDIENTE{]}}, revisa el diff o mapa de cambios y pide una
segunda inspección crítica.

\textbf{6. Entrega.} El informe indica qué se hizo, qué no se hizo y
cómo reemplazar datos provisionales. Una persona ajena ejecuta las
instrucciones. Si necesita ayuda oral, la documentación no está
terminada.

\textbf{7. Reflexiona.} Marta anota: «El prompt inicial no definía si el
formulario debía enviar. Convertirlo en un elemento visual sin envío
evitó una acción externa no deseada».

\subsection{Variaciones de proyecto por
perfil}\label{variaciones-de-proyecto-por-perfil}

\begin{itemize}
\tightlist
\item
  \textbf{Sol:} paquete de estudio con índice de fuentes, actividades y
  rúbrica; no publicar en el aula.
\item
  \textbf{Leo:} dossier de investigación con tabla de afirmaciones,
  fuentes y fecha de consulta.
\item
  \textbf{Dani:} mejora pequeña de un repositorio con issue, plan, diff,
  pruebas y documentación.
\item
  \textbf{Equipo mixto:} una persona encarga, otra revisa evidencia y
  una tercera intenta seguir las instrucciones desde cero.
\end{itemize}

\subsection{Rúbrica de autoevaluación del
proyecto}\label{ruxfabrica-de-autoevaluaciuxf3n-del-proyecto}

Puntúa cada criterio de 0 a 2: objetivo y alcance; protección de
originales; calidad del encargo; correcciones durante el proceso;
evidencia; accesibilidad o usabilidad; recuperación; documentación
final. Un proyecto con menos de 12 sobre 16 necesita otra ronda.
Cualquier cero en seguridad, evidencia o recuperación impide
considerarlo terminado.

\subsection{Comprueba que lo has
entendido}\label{comprueba-que-lo-has-entendido-19}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿El proyecto final se evalúa por cantidad de archivos o por evidencia
  de que resuelve el problema?
\item
  ¿Qué tres elementos no pueden faltar en el informe final?
\end{enumerate}

\subsubsection{Solución comentada}\label{soluciuxf3n-comentada-21}

Se evalúa por el resultado y sus controles, no por volumen. Como mínimo:
cambios o entregables producidos, comprobaciones realmente ejecutadas y
límites o pendientes. También conviene incluir instrucciones de uso y
recuperación.

\subsection{Fuentes oficiales}\label{fuentes-oficiales-19}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\item
  \href{https://learn.chatgpt.com/docs/agent-approvals-security}{Agent
  approvals \& security}
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\end{itemize}

\textbf{Revisado contra la documentación:} 14 de julio de 2026.

\chapter{Apéndice A. Matriz rápida por
plataforma}\label{apuxe9ndice-a.-matriz-ruxe1pida-por-plataforma}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2500}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2500}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2500}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2500}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
Función
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
macOS
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Windows
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Linux
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
ChatGPT para escritorio & Sí & Sí & No \\
Codex local en la app & Sí & Sí & No \\
Codex CLI & Sí & Sí, nativo o WSL2 & Sí \\
Extensión de IDE & Sí & Sí & Sí \\
ChatGPT Work en la web & Sí & Sí & Sí \\
Navegador integrado & App y web & App y web & Web; no CLI/IDE \\
Computer Use local & Sí, con permisos del sistema & Sí, escritorio
activo & No como app local \\
Revisión Git local & Con Git instalado & Con Git instalado & Con Git
instalado \\
Scheduled con carpeta local & App encendida & App encendida & No
mediante app local \\
Sandbox local & Seatbelt & Windows sandbox o WSL2 & \texttt{bubblewrap}
recomendado \\
\end{longtable}
}

La disponibilidad también depende de cuenta, plan, región, despliegue y
política de la organización.

\chapter{Apéndice B. Plantillas de
prompts}\label{apuxe9ndice-b.-plantillas-de-prompts}

\section{Solo lectura}\label{solo-lectura}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Trabaja únicamente en [carpeta]. No cambies archivos ni ejecutes acciones}
\NormalTok{externas. Analiza [material] y devuelve [salida]. Separa hechos de inferencias,}
\NormalTok{indica qué no pudiste leer y cita rutas concretas.}
\end{Highlighting}
\end{Shaded}

\section{Plan antes de actuar}\label{plan-antes-de-actuar}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No actúes todavía. Inspecciona el contexto, formula solo las preguntas que}
\NormalTok{cambian el resultado y propón un plan breve. Para cada paso indica archivos,}
\NormalTok{permisos, riesgo, comprobación y recuperación. Espera mi aprobación.}
\end{Highlighting}
\end{Shaded}

\section{Crear sin sobrescribir}\label{crear-sin-sobrescribir}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Crea el resultado dentro de [salida] con un nombre nuevo. No modifiques ni}
\NormalTok{borres originales. Muestra primero una vista previa. Después vuelve a abrir el}
\NormalTok{resultado, comprueba [criterios] y declara lo no verificado.}
\end{Highlighting}
\end{Shaded}

\section{Investigación}\label{investigaciuxf3n}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Investiga [pregunta] con fecha de corte [fecha]. Prioriza fuentes primarias.}
\NormalTok{Incluye enlace directo para cada afirmación, separa hechos de inferencias y}
\NormalTok{escribe "no verificado" cuando la fuente no respalde el dato. No realices}
\NormalTok{acciones externas.}
\end{Highlighting}
\end{Shaded}

\section{Corregir el rumbo}\label{corregir-el-rumbo}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Detén [acción]. El estado observado es [hecho] y esperaba [resultado]. Conserva}
\NormalTok{[elementos], descarta [pasos] y propón la corrección más pequeña. No continúes}
\NormalTok{hasta que confirme el plan.}
\end{Highlighting}
\end{Shaded}

\section{Cierre con evidencia}\label{cierre-con-evidencia}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Vuelve a leer los archivos, realiza las comprobaciones acordadas y entrega:}
\NormalTok{cambios, evidencia, límites, riesgos y recuperación. No presentes como}
\NormalTok{comprobado lo que no ejecutaste.}
\end{Highlighting}
\end{Shaded}

\section{Borrador sin enviar}\label{borrador-sin-enviar}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Prepara [mensaje/publicación/formulario] como borrador local. No abras cuentas,}
\NormalTok{no busques destinatarios, no adjuntes y no envíes ni publiques. Marca los datos}
\NormalTok{que requieren mi confirmación.}
\end{Highlighting}
\end{Shaded}

\chapter{Apéndice C. Solución de
problemas}\label{apuxe9ndice-c.-soluciuxf3n-de-problemas}

\section{No puedo iniciar sesión}\label{no-puedo-iniciar-sesiuxf3n}

Comprueba fecha y hora, dominio oficial, cuenta y espacio de trabajo. Si
existe SSO, MFA o administración, consulta a la organización. No
desactives MFA ni pegues códigos en el chat.

\section{Codex no ve la carpeta}\label{codex-no-ve-la-carpeta}

Confirma proyecto y directorio actual, revisa permisos del sistema y no
abras toda tu carpeta personal para resolverlo.

\section{Puede leer, pero no
escribir}\label{puede-leer-pero-no-escribir}

Revisa el perfil, confirma que la salida está dentro del workspace y
amplía únicamente la ubicación necesaria.

\section{Pide red repetidamente}\label{pide-red-repetidamente}

Identifica comando y dominio. Decide si basta una fuente ya disponible o
una búsqueda. Si la red no estaba en el plan, detén y revisa.

\section{Browser, Computer Use, plugins o Scheduled no
aparecen}\label{browser-computer-use-plugins-o-scheduled-no-aparecen}

Comprueba superficie, Plugins, Settings, plan, espacio de trabajo y
política administrativa. Actualiza la aplicación y utiliza la
alternativa de la lección.

\section{Linux avisa del sandbox}\label{linux-avisa-del-sandbox}

Comprueba \texttt{bubblewrap} y la guía oficial para tu distribución. No
desactives globalmente protecciones del kernel como primera solución.

\section{Windows mezcla PowerShell y
WSL}\label{windows-mezcla-powershell-y-wsl}

Decide dónde viven proyecto y herramientas. Usa Windows nativo o un
flujo WSL2 coherente. Reinicia la app después de cambiar el agente. No
uses WSL1.

\section{Computer Use controla otra
ventana}\label{computer-use-controla-otra-ventana}

Detén, cierra aplicaciones sensibles, autoriza una sola aplicación y
retira permisos persistentes si no son apropiados.

\section{No hay evidencia}\label{no-hay-evidencia}

Pide reabrir archivos, ejecutar la comprobación y distinguir ejecutado,
observado e inferido. Conserva «no verificado» si no puede comprobarlo.

\section{Cambió demasiados
archivos}\label{cambiuxf3-demasiados-archivos}

Detén, revisa lista y diff, conserva cambios ajenos, restaura solo el
alcance de la tarea y reduce el objetivo antes de reintentar.

\section{La tarea no termina}\label{la-tarea-no-termina}

Pide estado y bloqueo, divide investigación, creación y publicación, y
no aumentes permisos o coste sin comprender la causa.

\section{Diagnóstico técnico}\label{diagnuxf3stico-tuxe9cnico}

\texttt{codex\ doctor} puede generar un informe de instalación,
configuración y autenticación. Revísalo antes de compartirlo porque
puede contener rutas y nombres de proyecto.

\chapter{Apéndice D. Glosario}\label{apuxe9ndice-d.-glosario}

\textbf{Acción externa:} enviar, publicar, comprar, borrar o cambiar
algo fuera de la carpeta local.\\
\textbf{Agente:} sistema que utiliza herramientas y avanza varios pasos
hacia un resultado.\\
\textbf{API key:} credencial de la plataforma API con facturación y
controles propios.\\
\textbf{Aprobación:} decisión sobre una acción concreta.\\
\textbf{Chat:} preguntas y conversación.\\
\textbf{ChatGPT Work:} investigación y entregables revisables.\\
\textbf{CLI:} interfaz de terminal.\\
\textbf{Codex:} agente de OpenAI para software y tareas técnicas.\\
\textbf{Commit:} versión registrada por Git.\\
\textbf{Computer Use:} operación de aplicaciones gráficas autorizadas.\\
\textbf{Contexto:} información disponible para comprender la tarea.\\
\textbf{Diff:} comparación de cambios.\\
\textbf{Entregable:} resultado final revisable.\\
\textbf{Git:} control de versiones local; no publica por sí solo.\\
\textbf{IDE:} editor preparado para proyectos de software.\\
\textbf{Inferencia:} conclusión que no aparece explícita en una
fuente.\\
\textbf{MCP:} protocolo para conectar modelos con herramientas y
fuentes.\\
\textbf{Plugin:} paquete instalable con skills y/o conexiones.\\
\textbf{Prompt:} pregunta, instrucción u objetivo.\\
\textbf{Proyecto:} agrupación de tareas y contexto o carpeta
conectada.\\
\textbf{Repositorio:} carpeta cuyo historial gestiona normalmente Git.\\
\textbf{Sandbox:} frontera técnica de archivos, comandos y red.\\
\textbf{Skill:} flujo reutilizable con instrucciones y recursos.\\
\textbf{Tarea:} conversación orientada a un resultado.\\
\textbf{Worktree:} copia de trabajo aislada de un repositorio Git.\\
\textbf{Workspace:} carpeta o conjunto de carpetas del trabajo local.

\chapter{Apéndice E. Plan de capturas para la futura
edición}\label{apuxe9ndice-e.-plan-de-capturas-para-la-futura-ediciuxf3n}

Las capturas se harán después de aprobar el texto y nunca sustituirán
las instrucciones:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Selector Chat / Work / Codex.
\item
  Proyecto local limitado a \texttt{Aprender-Codex}.
\item
  Control de permisos.
\item
  Primera tarea de solo lectura.
\item
  Previsualización y anotación de un documento.
\item
  Navegador con hostname visible.
\item
  Ajustes de Computer Use en macOS.
\item
  Computer Use en primer plano en Windows.
\item
  Web local en escritorio y ventana estrecha.
\item
  Panel Git con un único fragmento.
\item
  \texttt{AGENTS.md} e instrucciones activas.
\item
  Plugin con permisos visibles.
\item
  Scheduled con una tarea de práctica.
\item
  CLI con \texttt{/status}, ocultando datos personales.
\item
  Rúbrica del proyecto final.
\end{enumerate}

Cada imagen debe registrar sistema, versión y fecha; ocultar datos
personales; conservar visible el control relevante; tener texto
alternativo; y comprobarse en pantalla e impresión.

\chapter{Apéndice F. Fuentes y
revisión}\label{apuxe9ndice-f.-fuentes-y-revisiuxf3n}

\section{Fuentes oficiales
principales}\label{fuentes-oficiales-principales}

\begin{itemize}
\tightlist
\item
  \href{https://learn.chatgpt.com/docs/quickstart}{Quickstart}
\item
  \href{https://learn.chatgpt.com/docs/use-chatgpt}{Use ChatGPT}
\item
  \href{https://learn.chatgpt.com/docs/prompting}{Prompting}
\item
  \href{https://learn.chatgpt.com/guides/best-practices}{Best practices}
\item
  \href{https://learn.chatgpt.com/docs/projects}{Projects, chats, and
  tasks}
\item
  \href{https://learn.chatgpt.com/docs/artifacts-viewer}{Work with
  files}
\item
  \href{https://learn.chatgpt.com/docs/auth}{Authentication}
\item
  \href{https://learn.chatgpt.com/docs/sandboxing}{Sandbox}
\item
  \href{https://learn.chatgpt.com/docs/agent-approvals-security}{Agent
  approvals \& security}
\item
  \href{https://learn.chatgpt.com/docs/browser}{Browser}
\item
  \href{https://learn.chatgpt.com/docs/computer-use}{Computer Use}
\item
  \href{https://learn.chatgpt.com/docs/automations}{Scheduled tasks}
\item
  \href{https://learn.chatgpt.com/docs/skills-and-plugins}{Skills \&
  Plugins}
\item
  \href{https://learn.chatgpt.com/docs/extend/mcp}{Model Context
  Protocol}
\item
  \href{https://learn.chatgpt.com/docs/agent-configuration/agents-md}{Custom
  instructions with AGENTS.md}
\item
  \href{https://learn.chatgpt.com/docs/developer-commands?surface=cli}{CLI
  reference}
\item
  \href{https://learn.chatgpt.com/docs/developer-commands?surface=ide}{IDE
  reference}
\item
  \href{https://learn.chatgpt.com/docs/windows/windows-app}{Windows app}
\item
  \href{https://learn.chatgpt.com/docs/windows/wsl}{WSL2}
\end{itemize}

\section{Revisión antes de
publicar}\label{revisiuxf3n-antes-de-publicar}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Obtener la documentación oficial vigente.
\item
  Comprobar nombres de productos y superficies.
\item
  Probar instalación e inicio de sesión en macOS, Windows y Linux; WSL2
  por separado.
\item
  Completar cada práctica desde una carpeta nueva.
\item
  Registrar versión, sistema y resultado real.
\item
  Comprobar enlaces y alternativas de funciones variables.
\item
  Hacer una revisión con una persona sin experiencia técnica.
\item
  Hacer revisión de accesibilidad y lectura impresa.
\end{enumerate}

\section{Datos deliberadamente no
fijados}\label{datos-deliberadamente-no-fijados}

No se fijan precios, límites exactos, un modelo obligatorio ni
ubicaciones de interfaz sujetas a rediseño. La versión publicada debe
enlazar la fuente vigente y mostrar fecha de revisión.

\chapter{Apéndice G. Paquete de práctica
reproducible}\label{apuxe9ndice-g.-paquete-de-pruxe1ctica-reproducible}

Este paquete permite realizar las actividades sin utilizar información
personal. Todos los nombres, correos, importes y situaciones son
ficticios. Crea una carpeta llamada \texttt{Aprender-Codex} y reproduce
esta estructura:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Aprender{-}Codex/}
\NormalTok{├── 01{-}primeros{-}archivos/}
\NormalTok{│   ├── ideas.txt}
\NormalTok{│   ├── notas.txt}
\NormalTok{│   ├── seguimiento.txt}
\NormalTok{│   └── tareas.txt}
\NormalTok{├── 02{-}datos/}
\NormalTok{│   └── entrada/}
\NormalTok{│       ├── clientes{-}con{-}incidencias.csv}
\NormalTok{│       └── clientes{-}semana{-}2.csv}
\NormalTok{├── 03{-}web/}
\NormalTok{│   ├── brief.md}
\NormalTok{│   └── recursos/}
\NormalTok{│       └── textos.md}
\NormalTok{├── 04{-}investigacion/}
\NormalTok{│   └── preguntas.md}
\NormalTok{├── salida/}
\NormalTok{└── respaldo/}
\end{Highlighting}
\end{Shaded}

Deja vacías \texttt{salida} y \texttt{respaldo}. Durante el curso, una
práctica solo puede escribir en ellas o en la carpeta que su lección
autorice expresamente.

\section{\texorpdfstring{Archivo
\texttt{ideas.txt}}{Archivo ideas.txt}}\label{archivo-ideas.txt}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{IDEAS PARA EL TALLER}

\NormalTok{{-} Una actividad de 15 minutos para explicar qué es una fuente primaria.}
\NormalTok{{-} Un ejemplo con una noticia y el comunicado original.}
\NormalTok{{-} Tarjetas para distinguir hecho, opinión e inferencia.}
\NormalTok{{-} Terminar con una lista de comprobación.}
\NormalTok{{-} Tal vez grabar un vídeo; todavía no está aprobado.}
\end{Highlighting}
\end{Shaded}

\section{\texorpdfstring{Archivo
\texttt{tareas.txt}}{Archivo tareas.txt}}\label{archivo-tareas.txt}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{TAREAS}

\NormalTok{Revisar objetivos {-} Sol {-} 2026{-}07{-}18 {-} pendiente}
\NormalTok{Preparar tarjetas {-} Alex {-} 18/07/2026 {-} en curso}
\NormalTok{Confirmar aula {-} sin responsable {-} 2026{-}07{-}16 {-} pendiente}
\NormalTok{Publicar materiales {-} Sol {-} sin fecha {-} bloqueada hasta revisión}
\end{Highlighting}
\end{Shaded}

Este archivo contiene fechas con formatos distintos y datos ausentes.
Codex debe detectarlos, no completar lo que falta.

\section{\texorpdfstring{Archivo
\texttt{notas.txt}}{Archivo notas.txt}}\label{archivo-notas.txt}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{NOTAS DE LA REUNIÓN}

\NormalTok{El grupo tendrá entre 12 y 18 personas.}
\NormalTok{La sesión durará 90 minutos, aunque el borrador anterior decía 60.}
\NormalTok{No utilizar cuentas personales durante la demostración.}
\NormalTok{Preparar alternativa impresa por si falla la conexión.}
\NormalTok{Pendiente: confirmar si el aula tiene proyector.}
\end{Highlighting}
\end{Shaded}

\section{\texorpdfstring{Archivo
\texttt{seguimiento.txt}}{Archivo seguimiento.txt}}\label{archivo-seguimiento.txt}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{SEGUIMIENTO}

\NormalTok{Objetivos: revisados.}
\NormalTok{Tarjetas: primera versión lista; falta comprobar lectura fácil.}
\NormalTok{Aula: reservada, pero el proyector no está confirmado.}
\NormalTok{Vídeo: no iniciado y no aprobado.}
\NormalTok{Publicación: no autorizada.}
\end{Highlighting}
\end{Shaded}

Los cuatro archivos permiten practicar inventario, contradicciones y
planificación. Por ejemplo, la duración de 90 minutos debe prevalecer
como dato más reciente solo si el contexto permite justificarlo; si no,
se marca para revisión.

\section{\texorpdfstring{Archivo
\texttt{clientes-con-incidencias.csv}}{Archivo clientes-con-incidencias.csv}}\label{archivo-clientes-con-incidencias.csv}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{cliente,email,ultima\_contacto,estado}
\NormalTok{Alba Norte,alba@example.test,2026{-}06{-}28,pendiente}
\NormalTok{Bosque Azul,bosque@example.test,2026{-}07{-}03,en curso}
\NormalTok{Casa Río,,2026{-}07{-}05,pendiente}
\NormalTok{Delta Taller,delta@example.test,05/07/2026,pendiente}
\NormalTok{Estudio Faro,faro@example.test,fecha{-}desconocida,cerrado}
\NormalTok{Ficción Sur,ficcion@example.test,2026{-}07{-}09,en curso}
\end{Highlighting}
\end{Shaded}

Los dominios \texttt{.test} están destinados a ejemplos y no deben
utilizarse para envíos. La fecha \texttt{05/07/2026} es interpretable en
España, pero no cumple el formato declarado; \texttt{fecha-desconocida}
es inválida; Casa Río no tiene correo. El resultado correcto conserva
las seis filas y señala las incidencias.

\section{\texorpdfstring{Archivo
\texttt{clientes-semana-2.csv}}{Archivo clientes-semana-2.csv}}\label{archivo-clientes-semana-2.csv}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{cliente,email,ultima\_contacto,estado}
\NormalTok{Alba Norte,alba@example.test,2026{-}07{-}11,en curso}
\NormalTok{Bosque Azul,bosque@example.test,2026{-}07{-}10,cerrado}
\NormalTok{Casa Río,,2026{-}07{-}05,pendiente}
\NormalTok{Grupo Luna,luna@example.test,2026{-}07{-}12,pendiente}
\end{Highlighting}
\end{Shaded}

Este segundo archivo sirve para comprobar si la automatización es
reutilizable. No se debe combinar con el primero salvo que el encargo
explique cómo resolver clientes repetidos.

\section{\texorpdfstring{Archivo
\texttt{brief.md}}{Archivo brief.md}}\label{archivo-brief.md}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Brief: Taller Norte}

\NormalTok{Taller Norte ofrece sesiones de organización digital para pequeños comercios.}

\FunctionTok{\#\# Público}

\NormalTok{Personas que utilizan correo, documentos y hojas de cálculo, pero no se}
\NormalTok{consideran técnicas.}

\FunctionTok{\#\# Objetivo de la web}

\NormalTok{Explicar el servicio y facilitar que una persona prepare una consulta.}
\NormalTok{La web de práctica será local: no enviará formularios ni se publicará.}

\FunctionTok{\#\# Mensajes confirmados}

\SpecialStringTok{{-} }\NormalTok{Sesiones prácticas con ejemplos cotidianos.}
\SpecialStringTok{{-} }\NormalTok{Material de seguimiento después de cada sesión.}
\SpecialStringTok{{-} }\NormalTok{Adaptación al nivel del grupo.}

\FunctionTok{\#\# Datos pendientes}

\SpecialStringTok{{-} }\NormalTok{Precio.}
\SpecialStringTok{{-} }\NormalTok{Duración exacta.}
\SpecialStringTok{{-} }\NormalTok{Dirección de contacto.}
\SpecialStringTok{{-} }\NormalTok{Testimonios: no existen y no se deben inventar.}
\end{Highlighting}
\end{Shaded}

\section{\texorpdfstring{Archivo
\texttt{recursos/textos.md}}{Archivo recursos/textos.md}}\label{archivo-recursostextos.md}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Textos provisionales}

\NormalTok{Título: Organización digital sin complicaciones}

\NormalTok{Descripción: Aprende un método claro para ordenar archivos, revisar tareas}
\NormalTok{y reducir trabajo repetitivo.}

\NormalTok{Llamada a la acción provisional: Prepara tu consulta}

\NormalTok{Nota: cualquier correo o precio debe mostrarse como }\CommentTok{[}\OtherTok{PENDIENTE}\CommentTok{]}\NormalTok{.}
\end{Highlighting}
\end{Shaded}

\section{\texorpdfstring{Archivo
\texttt{preguntas.md}}{Archivo preguntas.md}}\label{archivo-preguntas.md}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{\# Investigación de práctica}

\NormalTok{Compara tres fuentes públicas sobre alfabetización mediática.}

\SpecialStringTok{1. }\NormalTok{¿Cómo define cada fuente una fuente primaria?}
\SpecialStringTok{2. }\NormalTok{¿Qué método propone para verificar una afirmación?}
\SpecialStringTok{3. }\NormalTok{¿Qué fecha y ámbito geográfico tiene la información?}
\SpecialStringTok{4. }\NormalTok{¿Qué coincide y qué discrepa?}

\NormalTok{No redactes una recomendación hasta completar una tabla de evidencia.}
\end{Highlighting}
\end{Shaded}

\section{Control del paquete antes de
empezar}\label{control-del-paquete-antes-de-empezar}

Comprueba que existen 9 archivos: cuatro de texto iniciales, dos CSV, un
brief, un recurso de texto y un archivo de preguntas. Guarda una copia
comprimida o duplica la carpeta en \texttt{respaldo/inicio}. Si una
práctica modifica \texttt{entrada}, recupera el paquete antes de
continuar.

\chapter{Apéndice H. Cuatro casos
integrales}\label{apuxe9ndice-h.-cuatro-casos-integrales}

Los casos integrales no introducen funciones nuevas. Combinan varias
lecciones y obligan a tomar decisiones. Intenta cada caso antes de leer
los criterios de corrección.

\section{Caso 1. Sol prepara una unidad
didáctica}\label{caso-1.-sol-prepara-una-unidad-diduxe1ctica}

\textbf{Situación.} Sol tiene apuntes, una lista de fuentes y resultados
de una actividad. Necesita un paquete para una sesión de 90 minutos,
pero no quiere publicar ni utilizar datos del alumnado.

\textbf{Entregables.} \texttt{guia-docente.md},
\texttt{actividad-alumnado.md}, \texttt{rubrica.md} y
\texttt{control-de-fuentes.md}.

\textbf{Secuencia recomendada.}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Duplicar materiales y retirar nombres o identificadores.
\item
  Pedir inventario sin cambios y marcar contradicciones.
\item
  Definir objetivos observables: identificar fuente primaria, distinguir
  hecho e inferencia y justificar una verificación.
\item
  Solicitar un esquema antes de redactar.
\item
  Generar los cuatro archivos en una salida nueva.
\item
  Revisar nivel de lectura, tiempo real de la actividad, accesibilidad y
  correspondencia entre objetivos y rúbrica.
\end{enumerate}

\textbf{Prompt de partida.}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Usa únicamente los materiales anonimizados de entrada. Diseña una sesión de}
\NormalTok{90 minutos para principiantes. Antes de redactar, muestra contradicciones,}
\NormalTok{preguntas y distribución del tiempo. No inventes fuentes ni experiencias del}
\NormalTok{alumnado. Cada afirmación factual debe poder rastrearse a control{-}de{-}fuentes.md.}
\NormalTok{Guarda los cuatro entregables indicados en salida y termina con una revisión}
\NormalTok{de accesibilidad, tiempos y datos pendientes. No publiques nada.}
\end{Highlighting}
\end{Shaded}

\begin{warningbox}

\textbf{Trampa deliberada.} Una nota antigua indica 60 minutos. El
agente debe advertir la discrepancia y no mezclar ambas duraciones.

\end{warningbox}

\begin{successbox}

\textbf{Criterios de corrección.} Los tiempos suman 90 minutos; la
rúbrica evalúa los objetivos declarados; no hay datos personales; todas
las fuentes están identificadas; los archivos pueden usarse sin una
explicación oral adicional.

\end{successbox}

\section{Caso 2. Marta prepara el seguimiento
semanal}\label{caso-2.-marta-prepara-el-seguimiento-semanal}

\textbf{Situación.} Cada semana llega un CSV parecido, pero puede
contener columnas o formatos diferentes. Marta necesita saber a quién
revisar; durante el curso no se enviará ningún mensaje.

\textbf{Entregables.} \texttt{seguimiento.csv},
\texttt{incidencias.csv}, \texttt{resumen.md} y
\texttt{registro-ejecucion.md}.

\textbf{Secuencia recomendada.}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Validar cabeceras, codificación y número de filas.
\item
  Mostrar cinco filas de vista previa.
\item
  Separar datos procesables e incidencias sin perder filas.
\item
  Reconciliar totales.
\item
  Repetir con la semana 2 en una carpeta de salida distinta.
\item
  Comparar resultados sin fusionar registros por intuición.
\end{enumerate}

\begin{warningbox}

\textbf{Trampa deliberada.} Casa Río carece de correo y dos fechas no
cumplen el formato. Un resultado que complete esos datos está mal aunque
parezca útil.

\end{warningbox}

\begin{successbox}

\textbf{Criterios de corrección.} Las seis filas de la primera semana
aparecen exactamente una vez entre seguimiento e incidencias; cada regla
está documentada; no se modifica la entrada; la segunda ejecución no
sobrescribe la primera; no se producen envíos.

\end{successbox}

\section{Caso 3. Leo redacta una comparativa con
fuentes}\label{caso-3.-leo-redacta-una-comparativa-con-fuentes}

\textbf{Situación.} Leo compara tres opciones para una asociación. Debe
separar información oficial, opiniones de terceros e inferencias
propias.

\textbf{Entregables.} \texttt{protocolo.md},
\texttt{tabla-evidencia.md}, \texttt{comparativa.md} y
\texttt{registro-fuentes.md}.

\textbf{Secuencia recomendada.}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Escribir las preguntas y criterios antes de buscar.
\item
  Priorizar fuentes primarias y registrar la fecha de consulta.
\item
  Anotar afirmaciones, evidencia, vigencia y confianza.
\item
  Detenerse ante contradicciones importantes.
\item
  Redactar la comparativa desde la tabla, no desde memoria.
\item
  Hacer una auditoría inversa de cinco afirmaciones.
\end{enumerate}

\textbf{Prompt de auditoría.}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Elige las cinco afirmaciones más importantes de comparativa.md. Para cada una,}
\NormalTok{localiza la fila exacta de tabla{-}evidencia.md y la fuente correspondiente.}
\NormalTok{Marca SIN RESPALDO cualquier frase cuyo camino no sea completo. No busques}
\NormalTok{fuentes nuevas en esta fase: evalúa únicamente lo entregado.}
\end{Highlighting}
\end{Shaded}

\begin{warningbox}

\textbf{Trampa deliberada.} Una reseña secundaria es más reciente que la
página oficial, pero no explica de dónde obtiene un dato. La fecha
reciente no la convierte automáticamente en autoridad.

\end{warningbox}

\begin{successbox}

\textbf{Criterios de corrección.} Hechos e inferencias se distinguen;
las fechas tienen significado claro; las discrepancias no se ocultan;
ninguna conclusión importante queda sin respaldo.

\end{successbox}

\section{Caso 4. Dani corrige una incidencia
pequeña}\label{caso-4.-dani-corrige-una-incidencia-pequeuxf1a}

\textbf{Situación.} Una web permite enviar un formulario con un correo
claramente inválido. El repositorio ya contiene un cambio local ajeno a
la incidencia.

\textbf{Entregables.} Cambio mínimo, prueba reproducible y
\texttt{informe-incidencia.md}.

\textbf{Secuencia recomendada.}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Leer instrucciones y consultar el estado de Git.
\item
  Identificar y proteger el cambio preexistente.
\item
  Reproducir el problema antes de editar.
\item
  Proponer un plan breve y archivos afectados.
\item
  Implementar la corrección y una prueba relevante.
\item
  Revisar diff, ejecutar pruebas y realizar comprobación manual.
\end{enumerate}

\begin{warningbox}

\textbf{Trampa deliberada.} Una herramienta de formato intenta cambiar
todo el archivo. Dani debe separar ese ruido de la corrección, no
aceptar un diff enorme por comodidad.

\end{warningbox}

\begin{successbox}

\textbf{Criterios de corrección.} El fallo se demuestra antes y después;
el cambio ajeno permanece intacto; el diff se limita a la validación; el
informe distingue pruebas ejecutadas de comprobaciones pendientes; no se
publica ni crea un commit sin autorización.

\end{successbox}

\section{Cómo realizar los casos en
grupo}\label{cuxf3mo-realizar-los-casos-en-grupo}

Asigna tres papeles rotatorios: \textbf{persona solicitante}, que define
el resultado; \textbf{persona operadora}, que dirige a Codex; y
\textbf{persona revisora}, que solo puede utilizar la evidencia
entregada. Si la revisora necesita creer una afirmación no demostrada,
la entrega vuelve a la persona operadora. Cambiad los papeles en el
siguiente caso.

\chapter{Apéndice I. Clínica de
prompts}\label{apuxe9ndice-i.-cluxednica-de-prompts}

Un prompt se mejora tomando decisiones, no añadiendo palabras
decorativas. La columna central no es la única formulación correcta:
muestra el tipo de precisión que falta.

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
  >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
Petición débil
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Petición mejorada
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Qué se hizo explícito
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
«Ordena esto.» & «Sin modificar originales, inventaría los archivos,
propón nombres y muestra colisiones antes de copiar a \texttt{salida}.»
& Alcance, secuencia y protección. \\
«Hazlo profesional.» & «Usa tono formal, títulos descriptivos, fechas
uniformes y una tabla legible en pantalla e impresión.» & Sustituye un
adjetivo por criterios. \\
«Investiga a fondo.» & «Responde cuatro preguntas, prioriza fuentes
oficiales, registra fecha y separa hechos de inferencias.» & Preguntas,
fuentes y trazabilidad. \\
«Arregla la web.» & «Reproduce el desbordamiento a 360 px, corrígelo sin
cambiar el contenido y comprueba que no haya desplazamiento horizontal.»
& Fallo, alcance y prueba. \\
«Mándaselo al cliente.» & «Prepara un borrador dirigido a la persona
indicada; no lo envíes. Muestra destinatario, asunto y adjuntos para
revisión.» & Separa preparación y acción externa. \\
«Limpia el CSV.» & «Conserva todas las filas, no inventes ausencias,
separa incidencias y reconcilia recuentos.» & Define qué significa
limpiar. \\
«Usa fuentes fiables.» & «Prioriza documentación primaria; justifica las
secundarias y marca cualquier afirmación sin respaldo directo.» &
Convierte fiabilidad en protocolo. \\
«Mejora el código.» & «Reduce la duplicación de la función indicada sin
cambiar su comportamiento; ejecuta las pruebas y muestra el diff.» &
Localiza, limita y verifica. \\
«Automatiza esto cada semana.» & «Primero ejecútalo manualmente; luego
programa una salida fechada, registra fallos y no envíes ni
sobrescribas.» & Prerrequisito, evidencia y fallos. \\
«Haz una copia.» & «Copia la carpeta en
\texttt{respaldo/antes-del-cambio}, verifica número de archivos y no
borres copias anteriores.» & Destino y comprobación. \\
«Comprueba que funciona.» & «Ejecuta la prueba indicada, abre el
resultado, informa del comando y separa lo comprobado de lo pendiente.»
& Evidencia concreta. \\
«Termínalo.» & «Compara el resultado con estos cinco criterios, corrige
solo incumplimientos y entrega cambios, pruebas, pendientes e
instrucciones.» & Define el cierre. \\
\end{longtable}
}

\section{Ejercicio 1. Diagnostica antes de
reescribir}\label{ejercicio-1.-diagnostica-antes-de-reescribir}

Para cada petición débil, identifica qué falta en estas cinco
categorías:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \textbf{Resultado:} ¿qué debe existir al final?
\item
  \textbf{Contexto:} ¿qué datos, público o situación importan?
\item
  \textbf{Alcance:} ¿qué puede leer o cambiar?
\item
  \textbf{Límites:} ¿qué no debe hacer ni inventar?
\item
  \textbf{Prueba:} ¿cómo sabrás que está bien?
\end{enumerate}

No todos los encargos necesitan las cinco categorías con el mismo
detalle. Una explicación sencilla puede requerir solo resultado y nivel.
Una acción sobre archivos o cuentas suele necesitarlas todas.

\section{Ejercicio 2. Reduce sin perder
control}\label{ejercicio-2.-reduce-sin-perder-control}

Este prompt es claro pero repetitivo:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{No modifiques entrada. No cambies entrada. Entrada debe permanecer igual.}
\NormalTok{Haz una copia en salida. Quiero que el resultado esté en salida. No lo pongas}
\NormalTok{en entrada. Comprueba todo y asegúrate de que está bien y correcto.}
\end{Highlighting}
\end{Shaded}

Una versión más útil sería:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Trata \textasciigrave{}entrada/\textasciigrave{} como solo lectura y escribe únicamente en \textasciigrave{}salida/\textasciigrave{}.}
\NormalTok{Al terminar, compara recuentos, abre una muestra e informa de cualquier error.}
\end{Highlighting}
\end{Shaded}

La reducción conserva la regla y concreta «comprueba todo» en acciones
observables.

\section{Ejercicio 3. Añade una pausa
inteligente}\label{ejercicio-3.-auxf1ade-una-pausa-inteligente}

Transforma una tarea de alto impacto para que se detenga antes del
último paso:

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Prepara la publicación con título, texto, imagen y audiencia. No publiques.}
\NormalTok{Detente en la pantalla final y muéstrame un resumen para confirmación.}
\end{Highlighting}
\end{Shaded}

La pausa no compensa un contexto equivocado, pero evita convertir una
revisión en una acción irreversible.

\section{Plantilla universal
mínima}\label{plantilla-universal-muxednima}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Quiero [resultado].}
\NormalTok{Usa [contexto o archivos] y trabaja solo en [alcance].}
\NormalTok{No [límites o acciones excluidas].}
\NormalTok{Antes de actuar, [plan, preguntas o vista previa].}
\NormalTok{Al terminar, comprueba [criterios] y entrega [evidencia].}
\end{Highlighting}
\end{Shaded}

Si una línea no aporta una decisión real, elimínala. Si falta una
decisión que cambiaría el resultado, añádela.

\chapter{Apéndice J. Autoevaluación y guía para facilitar el
curso}\label{apuxe9ndice-j.-autoevaluaciuxf3n-y-guuxeda-para-facilitar-el-curso}

\section{Autoevaluación inicial}\label{autoevaluaciuxf3n-inicial}

Antes de empezar, puntúa de 0 a 2 cada afirmación: 0, todavía no; 1, con
ayuda; 2, sin ayuda.

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Puedo distinguir una conversación, un entregable visual y una tarea
  sobre archivos.
\item
  Sé localizar la carpeta con la que estoy trabajando.
\item
  Puedo explicar qué permiso se me solicita.
\item
  Sé describir un resultado y dos criterios de aceptación.
\item
  Puedo conservar originales y separar salidas.
\item
  Sé pedir evidencia en vez de aceptar «hecho».
\item
  Puedo detener una acción externa antes de confirmarla.
\item
  Sé recuperar una práctica desde una copia o Git.
\end{enumerate}

La puntuación no determina si puedes hacer el curso. Sirve para comparar
el inicio con el final. Entre 0 y 5, empieza por la ruta esencial con
acompañamiento; entre 6 y 11, sigue la ruta general; entre 12 y 16,
puedes acelerar las primeras prácticas, pero debes demostrar igualmente
sus controles.

\section{Evaluación final por
demostración}\label{evaluaciuxf3n-final-por-demostraciuxf3n}

No preguntes solo definiciones. Entrega a la persona una carpeta de
práctica con una contradicción, una ausencia y un archivo que no debe
modificarse. Pídele que:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  inspeccione sin cambios;
\item
  formule preguntas;
\item
  proponga un plan;
\item
  ejecute una salida limitada;
\item
  compruebe recuentos y una muestra;
\item
  explique qué sabe, qué infiere y qué queda pendiente;
\item
  recupere el estado inicial.
\end{enumerate}

Se considera competente cuando realiza el ciclo sin perder el original,
puede justificar permisos y no confunde una respuesta persuasiva con una
comprobación.

\section{Rúbrica común de 0 a 3}\label{ruxfabrica-comuxfan-de-0-a-3}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2000}}
  >{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2000}}
  >{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2000}}
  >{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2000}}
  >{\raggedright\arraybackslash}p{(\linewidth - 8\tabcolsep) * \real{0.2000}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
Dimensión
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
0
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
1
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
2
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
3
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
Objetivo & No existe & Es vago & Es claro & Es claro y medible \\
Alcance & Sin límites & Límites implícitos & Carpeta y acciones
definidas & Incluye exclusiones y casos dudosos \\
Seguridad & Arriesga originales & Depende de una advertencia & Conserva
originales & Añade vista previa y recuperación probada \\
Observación & Acepta sin mirar & Mira el resultado final & Revisa plan y
cambios & Corrige el rumbo con criterio \\
Evidencia & Solo afirma & Evidencia parcial & Controles relevantes &
Controles reproducibles y límites explícitos \\
Explicación & No puede explicarlo & Repite la respuesta & Explica
decisiones & Explica decisiones, incertidumbre y recuperación \\
\end{longtable}
}

Una puntuación alta no exige lenguaje técnico. Exige control y
comprensión.

\section{Guía para una persona
facilitadora}\label{guuxeda-para-una-persona-facilitadora}

\textbf{Antes de la sesión:} prepara el paquete desde cero, comprueba
disponibilidad de las superficies, utiliza cuentas y archivos de
demostración, decide qué acciones estarán prohibidas y prueba la
alternativa sin conexión.

\textbf{Durante la sesión:} proyecta también los errores, verbaliza por
qué se aprueba o rechaza un permiso, deja tiempo para leer el plan y
pide predicciones antes de ejecutar. No rescates inmediatamente a quien
se equivoca: pregunta «¿qué evidencia esperabas?» y «¿cómo volverías
atrás?».

\textbf{Después de la sesión:} conserva las entregas de práctica sin
datos personales, registra dudas recurrentes y actualiza las capturas o
pasos sujetos a cambios de producto. Revisa la documentación oficial
antes de cada nueva edición.

\section{Adaptaciones de
accesibilidad}\label{adaptaciones-de-accesibilidad}

\begin{itemize}
\tightlist
\item
  Proporciona los prompts también como texto copiable, no solo en
  capturas.
\item
  Lee en voz alta las solicitudes de permiso y explica el efecto.
\item
  Evita depender únicamente del color para verde, ámbar y rojo; incluye
  las etiquetas.
\item
  Divide las prácticas largas en puntos de parada con resultado visible.
\item
  Permite utilizar teclado, lector de pantalla o ampliación durante la
  demostración.
\item
  Ofrece los archivos con nombres consistentes y una versión comprimida
  limpia.
\item
  No evalúes velocidad de escritura; evalúa decisiones, evidencia y
  recuperación.
\end{itemize}

\section{Preguntas para cerrar cada
módulo}\label{preguntas-para-cerrar-cada-muxf3dulo}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  ¿Qué decisión nueva sabes tomar?
\item
  ¿Qué error eres capaz de detectar ahora?
\item
  ¿Qué evidencia guardarías para otra persona?
\item
  ¿Qué acción todavía no autorizarías sin ayuda?
\item
  ¿Cómo recuperarías el estado inicial?
\end{enumerate}

Si las respuestas son abstractas, repite una práctica con un archivo
distinto. El aprendizaje se consolida cuando el método sobrevive al
cambio de ejemplo.

\chapter{Lista final de aprobación
editorial}\label{lista-final-de-aprobaciuxf3n-editorial}

\begin{itemize}
\tightlist
\item[$\square$]
  El título y la promesa corresponden a un curso general desde cero.
\item[$\square$]
  Chat, Work y Codex están diferenciados sin menospreciar ninguna
  superficie.
\item[$\square$]
  macOS, Windows y Linux tienen rutas explícitas.
\item[$\square$]
  Las primeras seis lecciones no exigen Git.
\item[$\square$]
  Las primeras cinco lecciones en macOS/Windows no exigen terminal.
\item[$\square$]
  Cada práctica utiliza entrada, salida, verificación y recuperación
  propias.
\item[$\square$]
  Las acciones externas permanecen como borrador durante el aprendizaje.
\item[$\square$]
  Los originales se conservan.
\item[$\square$]
  Cada función de producto tiene fuente oficial específica.
\item[$\square$]
  Cada lección incluye un ejemplo resuelto y una autoevaluación
  razonada.
\item[$\square$]
  El paquete de práctica se puede reconstruir literalmente y no contiene
  datos reales.
\item[$\square$]
  Los cuatro casos integrales producen evidencia revisable.
\item[$\square$]
  La clínica de prompts enseña a concretar, no solo a alargar.
\item[$\square$]
  La rúbrica puede ser utilizada por una persona sin experiencia
  técnica.
\item[$\square$]
  «Revisado» y «probado» no se confunden.
\item[$\square$]
  Las capturas futuras tendrán texto alternativo y no contendrán datos
  personales.
\item[$\square$]
  El proyecto final puede completarse desde un perfil no técnico.
\item[$\square$]
  La ruta técnica enlaza el curso existente sin duplicarlo.
\item[$\square$]
  No se inicia maquetación PDF/LaTeX hasta recibir aprobación.
\end{itemize}

\end{document}
